package org.aisen.weibo.sina.ui.fragment.settings; import android.app.Activity; import android.app.Dialog; import android.app.DialogFragment; import android.app.Fragment; import android.graphics.drawable.ColorDrawable; import android.os.Bundle; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.BaseAdapter; import android.widget.GridView; import com.afollestad.materialdialogs.AlertDialogWrapper; import org.aisen.android.common.utils.ViewUtils; import org.aisen.android.ui.activity.basic.BaseActivity; import org.aisen.android.ui.widget.CircleImageView; import org.aisen.weibo.sina.R; import org.aisen.weibo.sina.base.AppSettings; import org.aisen.weibo.sina.support.utils.ThemeUtils; import java.util.HashMap; import java.util.Map; /** * 界面配色设置 * * @author wangdan * */ public class MDColorsDialogFragment extends DialogFragment implements OnItemClickListener, AdapterView.OnItemLongClickListener { public static void launch(Activity context) { Fragment fragment = context.getFragmentManager().findFragmentByTag("DMColorsDialogFragment"); if (fragment != null) { context.getFragmentManager().beginTransaction().remove(fragment).commit(); } MDColorsDialogFragment dialogFragment = new MDColorsDialogFragment(); dialogFragment.show(context.getFragmentManager(), "DMColorsDialogFragment"); } private Map<String, ColorDrawable> colorMap = new HashMap<String, ColorDrawable>(); @Override public Dialog onCreateDialog(Bundle savedInstanceState) { setCancelable(true); View view = View.inflate(getActivity(), R.layout.ui_mdcolors_dialog, null); GridView gridView = (GridView) view.findViewById(R.id.grid); gridView.setAdapter(new MDColorsAdapter()); gridView.setOnItemClickListener(this); gridView.setOnItemLongClickListener(this); return new AlertDialogWrapper.Builder(getActivity()) .setView(view) .setPositiveButton(R.string.cancel, null) .create(); } class MDColorsAdapter extends BaseAdapter { @Override public int getCount() { return ThemeUtils.themeColorArr.length; } @Override public Object getItem(int position) { return ThemeUtils.themeColorArr[position]; } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { if (convertView == null) convertView = View.inflate(getActivity(), R.layout.item_mdcolors, null); if (!colorMap.containsKey(String.valueOf(position))) colorMap.put(String.valueOf(position), new ColorDrawable(getResources().getColor(ThemeUtils.themeColorArr[position][0]))); CircleImageView imgColor = (CircleImageView) convertView.findViewById(R.id.imgColor); ColorDrawable colorDrawable = colorMap.get(String.valueOf(position)); imgColor.setImageDrawable(colorDrawable); View imgSelected = convertView.findViewById(R.id.imgSelected); imgSelected.setVisibility(AppSettings.getThemeColor() == position ? View.VISIBLE : View.GONE); return convertView; } } @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { if (position == AppSettings.getThemeColor()) { dismiss(); return; } AppSettings.setThemeColor(position); dismiss(); if (getActivity() instanceof BaseActivity) ((BaseActivity) getActivity()).reload(); } @Override public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) { ViewUtils.showMessage(getActivity(), getResources().getStringArray(R.array.mdColorNames)[position]); return true; } }