<改变imageView的颜色和状态栏>

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);


    }



}
今天多一点积累,明天少一分烦恼
原文地址:https://www.cnblogs.com/galibujianbusana/p/7053440.html