1.
import android.content.Context; import android.content.res.TypedArray; import android.support.annotation.Nullable; import android.util.AttributeSet; import android.widget.ImageView; import java.util.ArrayList; public class RippleImageView extends ImageView { public static ArrayList<RippleImageView> ImageList = new ArrayList<RippleImageView>(); private boolean globalColor = false; public RippleImageView(Context context, @Nullable AttributeSet attrs) { super(context, attrs); StatusBarUtils.RippleView(this, context); TypedArray ta = context.obtainStyledAttributes(attrs, R.styleable.mk); globalColor = ta.getBoolean(R.styleable.mk_globalcolor, false); if(globalColor == true) { setColorFilter(ColorUtils.GlobalColor); } if(ImageList.contains(this) == false) { ImageList.add(this); } } public void ChangeColor(int Color) { if(globalColor == true) { setColorFilter(Color); } } }
2.
import android.content.res.ColorStateList; public class ColorUtils { public static int GlobalColor = 0xffd43b33; public static int GlobalColorSelected = 0xffffffff; public static String GlobalColorString = "#FFD43B33"; public static int GlobalTextColorTitle = 0xff606060; public static int GlobalTextColorSubtitle = 0xff7f7d7d; public static ColorStateList colorStateList= null; public static ColorStateList getColorStateList(int mode) { if(colorStateList == null) { int[][] states = new int[2][]; states[0] = new int[]{android.R.attr.state_pressed}; states[1] = new int[]{android.R.attr.state_enabled}; int[] colors = new int[]{GlobalColor, GlobalColor}; colorStateList = new ColorStateList(states, colors); } return colorStateList; } public static void SetThemeColor(int BackColor, boolean backColorLight) { GlobalColor = BackColor; if(backColorLight == true) { GlobalTextColorTitle = 0xff606060; GlobalTextColorSubtitle = 0xff7f7d7d; } else { GlobalTextColorTitle = 0xffffffff; GlobalTextColorSubtitle = 0xffd0cece; } } }
3.
import android.app.Activity; import android.app.Dialog; import android.content.Context; import android.content.res.TypedArray; import android.graphics.Color; import android.os.Build; import android.view.View; import android.view.Window; import android.view.WindowManager; public class StatusBarUtils { public static void setWindowStatusBarColor(Activity activity, String color) { try { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { Window window = activity.getWindow(); window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); window.setStatusBarColor(Color.parseColor(color)); //底部导航栏 //window.setNavigationBarColor(activity.getResources().getColor(colorResId)); } } catch (Exception e) { e.printStackTrace(); } } public static void setWindowStatusBarColor(Dialog dialog, String color) { try { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { Window window = dialog.getWindow(); window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); window.setStatusBarColor(Color.parseColor(color)); //底部导航栏 //window.setNavigationBarColor(activity.getResources().getColor(colorResId)); } } catch (Exception e) { e.printStackTrace(); } } public static void RippleView(View view, Context context) { if(android.os.Build.VERSION.SDK_INT >= 21) { int[] attrsArray = { android.R.attr.selectableItemBackgroundBorderless }; //TypedArray typedArray = activity.obtainStyledAttributes(attrsArray); TypedArray typedArray = context.obtainStyledAttributes(attrsArray); int selector = typedArray.getResourceId(0, attrsArray[0]); view.setBackgroundResource(selector); // don't forget the resource recycling typedArray.recycle(); } else { int[] attrsArray = { android.R.attr.selectableItemBackground }; TypedArray typedArray = context.obtainStyledAttributes(attrsArray); //TypedArray typedArray = getActivity().obtainStyledAttributes(attrsArray); int selector = typedArray.getResourceId(0, attrsArray[0]); view.setBackgroundResource(selector); typedArray.recycle(); } } }
3333_
import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.graphics.Color; import android.graphics.PorterDuff; import android.support.design.widget.BottomSheetBehavior; import android.support.design.widget.CoordinatorLayout; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentTransaction; import android.support.v4.widget.NestedScrollView; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; import android.view.Gravity; import android.view.View; import android.widget.CompoundButton; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.RadioButton; import android.widget.Switch; import android.widget.TextView; import org.greenrobot.eventbus.EventBus; import org.greenrobot.eventbus.Subscribe; import org.greenrobot.eventbus.ThreadMode; import java.util.ArrayList; import java.util.List; import java.util.Observable; public class MainActivity extends AppCompatActivity { private static final String TAG = "MainActivity"; List<RippleImageView> viewlist=new ArrayList<>(); //TextView textTest; ArrayList<ImageView> buttonGroup = new ArrayList<ImageView>(); int selectedButtonID = -1; BottomSheetBehavior behavior; String packName; int StyleNow; //1-Light Style 2-DarkStyle TextView textViewSongName ; TextView textViewSingerName; /** * 自定义stylecolor 标识 1-6种 */ int styleNowColor; /** * * 添加部分 gxw 17/06/13 */ RippleImageView imageViewCD,imageViewSkip,imageViewNext,imageViewStop,imageViewMore; /** * 需要改变颜色的底部五个image集合 */ RippleList rippleList; /** * 当前显示的fragment序号 */ int fragmentNow; /** * LinearLayout 界面顶部红色的部分(可以改变颜色的部分) */ LinearLayout appBarLayoutUp; FragmentTransaction fragmentTransaction; FragmentManager fragmentManager; /** * 判断HomeActivity需要进入哪个fragment */ int type; private void SetChecked(int id) { selectedButtonID = id; for(int i = 0; i < buttonGroup.size(); i++) { if(id == i) { changeFragment(i+1); Log.d(TAG, "SetChecked:选择 "+i); buttonGroup.get(i).setAlpha(1.0f); } else { buttonGroup.get(i).setAlpha(0.7f); } } } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); EventBus.getDefault().register(this); type=getIntent().getIntExtra("type",0); Log.d(TAG, "onCreate: +type=="+type); initView(); initialize(type); packName = getPackageName(); SharedPreferences prefs = getSharedPreferences(packName, Context.MODE_PRIVATE); StyleNow = prefs.getInt("Style", 1); if(StyleNow == 1) { ColorUtils.SetThemeColor(0xffd43b33, true); } else if(StyleNow == 2) { ColorUtils.SetThemeColor(0xffd43b33, false); } textViewSongName = (TextView) findViewById(R.id.textViewSongName); textViewSingerName = (TextView) findViewById(R.id.textViewSingerName); TextView textViewScan = (TextView) findViewById(R.id.textViewScan); imageViewCD= (RippleImageView) findViewById(R.id.imageViewCD); StatusBarUtils.RippleView(textViewSongName, this); StatusBarUtils.RippleView(textViewSingerName, this); StatusBarUtils.RippleView(textViewScan, this); LinearLayout appBarLayoutUp = (LinearLayout)findViewById(R.id.appBarLayoutUp); appBarLayoutUp.setBackgroundColor(ColorUtils.GlobalColor); ImageView imageViewProg = (ImageView)findViewById(R.id.imageViewProg); imageViewProg.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { SetChecked(0); } }); ImageView imageViewSinger = (ImageView)findViewById(R.id.imageViewSinger); imageViewSinger.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { SetChecked(1); } }); ImageView imageViewSong = (ImageView)findViewById(R.id.imageViewSong); imageViewSong.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { SetChecked(2); } }); ImageView imageViewFavo = (ImageView)findViewById(R.id.imageViewFavo); imageViewFavo.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { SetChecked(3); } }); ImageView imageViewRecord = (ImageView)findViewById(R.id.imageViewRecord); imageViewRecord.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { SetChecked(4); } }); buttonGroup.add(imageViewProg); buttonGroup.add(imageViewSinger); buttonGroup.add(imageViewSong); buttonGroup.add(imageViewFavo); buttonGroup.add(imageViewRecord); ImageView imageViewBagde = (ImageView)findViewById(R.id.imageViewBagde); final RippleImageView imageViewStop= (RippleImageView) findViewById(R.id.imageViewStop); imageViewStop.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { imageViewStop.ChangeColor(getResources().getColor(R.color.styleColor2)); } }); BadgeView badge = new BadgeView(this); badge.setTargetView(imageViewBagde); badge.setBadgeGravity(Gravity.CENTER); badge.setBadgeCount(99); StatusBarUtils.setWindowStatusBarColor(this, ColorUtils.GlobalColorString); ImageView imageViewMore = (ImageView)findViewById(R.id.imageViewMore); imageViewMore.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if(behavior.getState() == BottomSheetBehavior.STATE_EXPANDED) { /** * 加的 */ MainActivity.this.finish(); behavior.setState(BottomSheetBehavior.STATE_COLLAPSED); }else { behavior.setState(BottomSheetBehavior.STATE_EXPANDED); } } }); NestedScrollView nsView = (NestedScrollView)findViewById(R.id.bottomSetting); behavior = BottomSheetBehavior.from(nsView); behavior.setState(BottomSheetBehavior.STATE_HIDDEN); ImageView imageViewBackFromSetting = (ImageView)findViewById(R.id.imageViewBackFromSetting); RadioButton rb1 = (RadioButton)findViewById(R.id.radioButtonLight); rb1.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { if(isChecked == true) { StyleNow = 1; EventBus.getDefault().post(new Message(1)); CoordinatorLayout coordinatorLayout= (CoordinatorLayout) findViewById(R.id.layoutbase); coordinatorLayout.setBackgroundResource(R.drawable.bg01); } } }); RadioButton rb2 = (RadioButton)findViewById(R.id.radioButtonDark); rb2.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { if(isChecked == true) { StyleNow = 2; EventBus.getDefault().post(new Message(2)); CoordinatorLayout coordinatorLayout= (CoordinatorLayout) findViewById(R.id.layoutbase); coordinatorLayout.setBackgroundResource(R.drawable.bg02); } } }); if(StyleNow == 1) { rb1.setChecked(true); textViewSongName.setTextColor(getResources().getColor(R.color.lightStyle_TextColor)); textViewSingerName.setTextColor(getResources().getColor(R.color.lightStyle_TextColor)); } else if(StyleNow == 2) { rb2.setChecked(true); textViewSongName.setTextColor(getResources().getColor(R.color.darkStyle_TextColor)); textViewSingerName.setTextColor(getResources().getColor(R.color.darkStyle_TextColor)); } imageViewBackFromSetting.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if(StyleNow == 1) { ColorUtils.SetThemeColor(0xffd43b33, true); } else if(StyleNow == 2) { ColorUtils.SetThemeColor(0xffd43b33, false); } SharedPreferences prefs = getSharedPreferences(packName, Context.MODE_PRIVATE); SharedPreferences.Editor ed = prefs.edit(); ed.putInt("Style", StyleNow); ed.commit(); behavior.setState(BottomSheetBehavior.STATE_HIDDEN); } }); SetChecked(type-1); imageViewCD.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { startActivity(new Intent(MainActivity.this, PlayActivity.class)); } }); } /** * gxw 17/06/13 */ public void initialize( int type){ fragmentManager=getSupportFragmentManager(); fragmentTransaction=fragmentManager.beginTransaction(); fragmentTransaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE); switch (type){ case 1: fragmentTransaction.replace(R.id.fragmentlayout,new ProFragment()); fragmentNow=1; break; case 2: fragmentTransaction.replace(R.id.fragmentlayout,new SingerFragment()); fragmentNow=2; break; case 3: fragmentTransaction.replace(R.id.fragmentlayout,new SongFragment()); fragmentNow=3; break; case 4: fragmentTransaction.replace(R.id.fragmentlayout,new FavoFragment()); fragmentNow=4; break; case 5: fragmentTransaction.replace(R.id.fragmentlayout,new RecordFragment()); fragmentNow=5; break; } fragmentTransaction.commit(); } public void changeFragment(int i){ fragmentManager=getSupportFragmentManager(); fragmentTransaction=fragmentManager.beginTransaction(); /** * 判断动画的切换方向 */ if(fragmentNow>i){ fragmentTransaction.setCustomAnimations(R.anim.push_left_in,R.anim.push_left_out); }else if(fragmentNow<i){ fragmentTransaction.setCustomAnimations(R.anim.back_left_in,R.anim.back_right_out); } switch (i){ case 1: fragmentTransaction.replace(R.id.fragmentlayout,new ProFragment()); fragmentNow=1; break; case 2: fragmentTransaction.replace(R.id.fragmentlayout,new SingerFragment()); fragmentNow=2; break; case 3: fragmentTransaction.replace(R.id.fragmentlayout,new SongFragment()); fragmentNow=3; break; case 4: fragmentTransaction.replace(R.id.fragmentlayout,new FavoFragment()); fragmentNow=4; break; case 5: fragmentTransaction.replace(R.id.fragmentlayout,new RecordFragment()); fragmentNow=5; break; } // fragmentTransaction.addToBackStack(null); fragmentTransaction.commit(); } @Subscribe(threadMode = ThreadMode.MAIN) public void onEventMainThread(com.multak.cookaraclient.info.Message msg){ if(msg.getStyle() == 1) { textViewSongName.setTextColor(getResources().getColor(R.color.lightStyle_TextColor)); textViewSingerName.setTextColor(getResources().getColor(R.color.lightStyle_TextColor)); } else if(msg.getStyle() == 2) { textViewSongName.setTextColor(getResources().getColor(R.color.darkStyle_TextColor)); textViewSingerName.setTextColor(getResources().getColor(R.color.darkStyle_TextColor)); } } public void initView(){ appBarLayoutUp= (LinearLayout) findViewById(R.id.appBarLayoutUp); int x=SharedPreferencesUtils.getParam(this,"StyleNowColor",1); Log.d(TAG, "initView: 颜色1::"+x); imageViewCD= (RippleImageView) findViewById(R.id.imageViewCD); imageViewSkip= (RippleImageView) findViewById(R.id.imageViewSkip); imageViewNext= (RippleImageView) findViewById(R.id.imageViewNext); imageViewStop= (RippleImageView) findViewById(R.id.imageViewStop); imageViewMore= (RippleImageView) findViewById(R.id.imageViewMore); viewlist.add(imageViewCD); viewlist.add(imageViewSkip); viewlist.add(imageViewNext); viewlist.add(imageViewStop); viewlist.add(imageViewMore); rippleList=new RippleList(viewlist,this); setStatubar(x); rippleList.setColor(x); //rippleList.setLinearLayout(appBarLayoutUp,x); appBarLayoutUp.setBackgroundColor(getResources().getColor(R.color.styleColor4)); } /** * * @param view 自定义颜色选择,并作操作处理 */ public void setStyleColor(View view){ switch (view.getId()){ case R.id.textView_styleColor1: rippleList.setColor(1); rippleList.setSharep(1); int x= (Integer) SharedPreferencesUtils.getParam(this,"StyleNowColor",1); Log.d(TAG, "setStyleColor: 颜色12:"+x); appBarLayoutUp.setBackgroundColor(getResources().getColor(R.color.styleColor1)); setStatubar(1); break; case R.id.textView_styleColor2: rippleList.setColor(2); rippleList.setSharep(2); setStatubar(2); break; case R.id.textView_styleColor3: rippleList.setColor(3); rippleList.setSharep(3); setStatubar(3); break; case R.id.textView_styleColor4: rippleList.setColor(4); rippleList.setSharep(4); setStatubar(4); break; case R.id.textView_styleColor5: rippleList.setColor(5); rippleList.setSharep(5); setStatubar(5); break; case R.id.textView_styleColor6: rippleList.setColor(6); rippleList.setSharep(6); setStatubar(6); break; default: break; } } public void setStatubar(int i) { switch (i) { /** * <color name="styleColor1">#1FC4C4</color> <color name="styleColor2">#71C41F</color> <color name="styleColor3">#5B0CAA</color> <color name="styleColor4">#BABA20</color> <color name="styleColor5">#AA0C5B</color> <color name="styleColor6">#D43B33</color> */ case 1: StatusBarUtils.setWindowStatusBarColor(this, "1FC4C4"); break; case 2: StatusBarUtils.setWindowStatusBarColor(this, "#71C41F"); break; case 3: StatusBarUtils.setWindowStatusBarColor(this, "#5B0CAA"); break; case 4: StatusBarUtils.setWindowStatusBarColor(this, "#BABA20"); break; case 5: StatusBarUtils.setWindowStatusBarColor(this, "#AA0C5B"); break; case 6: StatusBarUtils.setWindowStatusBarColor(this, "#D43B33"); break; } } }
import android.content.Context; import android.content.SharedPreferences; import android.widget.LinearLayout; import java.util.ArrayList; import java.util.List; /** * Created by guoxw on 2017/6/20. */ public class RippleList { List<RippleImageView>data=new ArrayList<>(); Context context; public RippleList(List<RippleImageView> data, Context context) { this.data = data; this.context = context; } public void setColor(int i){ if(i==1) { for (RippleImageView ripp : data) { ripp.ChangeColor(context.getResources().getColor(R.color.styleColor1)); } } if(i==2) { for (RippleImageView ripp : data) { ripp.ChangeColor(context.getResources().getColor(R.color.styleColor2)); } } if(i==3) { for (RippleImageView ripp : data) { ripp.ChangeColor(context.getResources().getColor(R.color.styleColor3)); } } if(i==4) { for (RippleImageView ripp : data) { ripp.ChangeColor(context.getResources().getColor(R.color.styleColor4)); } } if(i==5) { for (RippleImageView ripp : data) { ripp.ChangeColor(context.getResources().getColor(R.color.styleColor5)); } } if(i==6) { for (RippleImageView ripp : data) { ripp.ChangeColor(context.getResources().getColor(R.color.styleColor6)); } } } public void setSharep(int i){ SharedPreferencesUtils.setParam(context,"StyleNowColor",i); } public void setLinearLayout(LinearLayout lauout, int i){ switch (i){ case 1: lauout.setBackgroundColor(context.getResources().getColor(R.color.styleColor1)); break; case 2: lauout.setBackgroundColor(context.getResources().getColor(R.color.styleColor2)); break; case 3: lauout.setBackgroundColor(context.getResources().getColor(R.color.styleColor3)); break; case 4: lauout.setBackgroundColor(context.getResources().getColor(R.color.styleColor4)); break; case 5: lauout.setBackgroundColor(context.getResources().getColor(R.color.styleColor5)); break; case 6: lauout.setBackgroundColor(context.getResources().getColor(R.color.styleColor6)); break; } } }
import android.content.Context; import android.content.SharedPreferences; /** * Created by guoxw on 2017/6/20. */ public class SharedPreferencesUtils { private static String NAME="com.multak.cookaraclient1"; public static void setParam(Context context, String key, int x){ SharedPreferences prefs = context.getSharedPreferences(NAME, Context.MODE_PRIVATE); SharedPreferences.Editor ed = prefs.edit(); ed.putInt(key, x); ed.commit(); } public static int getParam(Context context,String key,int y){ SharedPreferences p=context.getSharedPreferences(NAME,Context.MODE_PRIVATE); return p.getInt(key,y); } }