zoukankan      html  css  js  c++  java
  • <改变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);
    
    
        }
    
    
    
    }
    今天多一点积累,明天少一分烦恼
  • 相关阅读:
    软件测试 Lab1 实验报告
    软件测试 Homework2
    谈谈最近的一个让我印象深刻的错误
    Bill Manager Problem Statement
    C#学习记录(九)Windows Phone开发中的Binding
    C#学习记录(八) XML Serializer尝试
    C#学习记录(七)LINQ语句及LAMDA表达式
    C#学习记录(六)
    软件测试之作业三
    软件测试之实验一
  • 原文地址:https://www.cnblogs.com/galibujianbusana/p/7053440.html
Copyright © 2011-2022 走看看