package com.android.launcher3; import android.view.MenuItem; import android.app.ActionBar; import android.app.Activity; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import android.content.Context; import android.widget.BaseAdapter; import android.widget.ImageView; import android.widget.TextView; import java.io.File; import java.io.IOException; import android.content.Intent; import android.graphics.Bitmap; import android.graphics.Color; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.GridView; import android.widget.AdapterView.OnItemClickListener; import android.os.Bundle; import android.widget.AdapterView; import android.app.WallpaperManager; import android.graphics.BitmapFactory; import android.graphics.drawable.ColorDrawable; /** *add 20140902 for HOSIN_CUST_LAUNCHER_MESSI */ public class ThemePickerActivity extends Activity { private static final String NAME_KEY = "theme_key"; private static final String BITMAP_KEY = "bitmap_key"; private List<HashMap<String, Object>> mThemes; HashMap<String, String> xHashMap; private static final String SHARED_PREFRENCE_KEY = "com.android.launcher3.prefs"; private ImageAdapter adapter; private GridView gridView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.theme_picker); ActionBar actionBar = getActionBar(); //actionBar.setBackgroundDrawable(new ColorDrawable(R.color.white)); actionBar.setDisplayHomeAsUpEnabled(true); actionBar.setTitle(R.string.theme_title); actionBar.setIcon(getResources().getDrawable(R.drawable.ic_themes)); getThemes(); gridView = (GridView) findViewById(R.id.gridview); adapter = new ImageAdapter(this); gridView.setAdapter(adapter); gridView.setSelector(new ColorDrawable(Color.TRANSPARENT)); gridView.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { WallpaperManager wallpaperManager = WallpaperManager .getInstance(ThemePickerActivity.this); if (position == mThemes.size()) { } else { Intent intent = new Intent(ThemePickerActivity.this,ThemeEffectPreview.class); intent.putExtra(LauncherApplication.NAME_KEY, (String) mThemes.get(position).get(LauncherApplication.NAME_KEY)); startActivity(intent); } /*else { // down load this theme }*/ } }); } @Override public boolean onOptionsItemSelected(MenuItem item){ switch(item.getItemId()){ case android.R.id.home: this.finish(); break; default: break; } return super.onOptionsItemSelected(item); } private class ImageAdapter extends BaseAdapter { private Context mContext; public ImageAdapter(Context context) { this.mContext = context; } @Override public int getCount() { return mThemes.size(); } @Override public Object getItem(int position) { return mThemes.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { ImageView previewImage = null; TextView themeName = null; ImageView check = null; if(null == convertView){ convertView = LayoutInflater.from(mContext).inflate(R.layout.theme_grid_item, null); } previewImage = (ImageView) convertView.findViewById(R.id.grid_item_image); themeName = (TextView) convertView.findViewById(R.id.grid_item_theme_name); check = (ImageView) convertView.findViewById(R.id.grid_item_check); HashMap<String,Object> map = mThemes.get(position); if(((String)map.get(LauncherApplication.NAME_KEY)).equals("default")){ themeName.setText(ThemePickerActivity.this.getString(R.string.default_theme)); } else themeName.setText((CharSequence) map.get(LauncherApplication.NAME_KEY)); previewImage.setImageBitmap((Bitmap) map.get(LauncherApplication.BITMAP_KEY)); String name = getSharedPreferences( LauncherApplication.SHARED_PREFRENCE, Context.MODE_PRIVATE).getString(LauncherApplication.NAME_KEY, "default"); if(name.equals((String)map.get(LauncherApplication.NAME_KEY))){ check.setVisibility(View.VISIBLE); } else{ check.setVisibility(View.INVISIBLE); } return convertView; /*ImageView imageView; if (convertView == null) { imageView = new ImageView(mContext); imageView.setLayoutParams(new GridView.LayoutParams(280, 478)); imageView.setScaleType(ImageView.ScaleType.CENTER_CROP); imageView.setPadding(8, 8, 8, 8); } else { imageView = (ImageView) convertView; } if (position == mThemesNames.size()) imageView.setImageBitmap(BitmapFactory.decodeResource( ThemePickerActivity.this.getResources(), R.drawable.wallpaper_architecture)); else imageView.setImageBitmap(mThemesBitmaps.get(position)); return imageView;*/ } } private void getThemes() { mThemes = new ArrayList<HashMap<String,Object>>(); try { String[] themes = getAssets().list(getString(R.string.theme)); for (String theme : themes) { String path = getString(R.string.theme)+"/"+theme+"/" +getString(R.string.preview)+"/"+"thumbnail.jpg"; Bitmap bitmap = BitmapFactory .decodeStream(getAssets().open(path)); HashMap<String,Object> map = new HashMap<String, Object>(); map.put(LauncherApplication.NAME_KEY, theme); map.put(LauncherApplication.BITMAP_KEY, bitmap); if(theme.equals("default")) mThemes.add(0,map); else mThemes.add(map); } } catch (IOException e) { // TODO Auto-generated catch block Log.i("messi",e.toString()); e.printStackTrace(); } } private String trimExtension(String filename) { if ((filename != null) && (filename.length() > 0)) { int i = filename.lastIndexOf('.'); if ((i > -1) && (i < (filename.length()))) { return filename.substring(0, i); } } return null; } private boolean isFileEffect(String name) { File file = new File(name); if (file.exists() && file.isDirectory() && (file.list().length > 0)) return true; else return false; } }