介绍
这期内容当中小编将会给大家带来有关怎么在Android中通过自定义控件实现颜色选择器,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
activity_mian。xml文件:
& lt; ? xml version=?.0“,编码=皍tf-8" ?比; & lt; RelativeLayout  xmlns: android=癶ttp://schemas.android.com/apk/res/android" ,xmlns:工具=癶ttp://schemas.android.com/tools" ,android: layout_width=癿atch_parent" ,android: layout_height=癿atch_parent"祝辞 & lt; TextView ,android: id=癅 + id/tv_info" ,android: layout_width=皐rap_content" ,android: layout_height=皐rap_content" ,android: layout_above=癅 + id/ll_color" ,android: layout_centerHorizontal=皌rue" ,android: layout_marginBottom=?0 dp" ,android:重力=癱enter_horizontal" ,android:文本=把丈≈怠?/比; & lt; LinearLayout ,android: id=癅 + id/ll_color" ,android: layout_width=癿atch_parent" 300年,android: layout_height=癲p" ,android: layout_centerInParent=皌rue" ,android:重力=癱enter" ,android:取向=皏ertical"祝辞& lt;/LinearLayout> & lt;/RelativeLayout>
MainActivity。java文件
package zxz.colorpickerdemo; import android.graphics.Color; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.widget.LinearLayout; import android.widget.TextView; import zxz.colorpickerdemo.view.ColorPickerView; public class  MainActivity extends AppCompatActivity  { ll, private LinearLayout ; ,private TextView 电视; ,private ColorPickerView  colorPickerView; ,@Override ,protected void  onCreate (Bundle savedInstanceState), { ,super.onCreate (savedInstanceState); ,setContentView (R.layout.activity_main); LinearLayout, ll =, (), findViewById (R.id.ll_color);=,tv (TextView), findViewById (R.id.tv_info);=,,colorPickerView  new ColorPickerView(这个); ,ll.addView (colorPickerView); ,colorPickerView.setOnColorBackListener (new ColorPickerView.OnColorBackListener (), { @Override才能 public 才能;void  onColorBack (int ,, int r, int g, int b), { tv.setText才能(“R:“, +, r +,“\ nG:“, +, g +,“\注:“,+,b +,“\ n", +, colorPickerView.getStrColor ()); tv.setTextColor才能(Color.argb (,, r, g, b)); ,,} ,}); ,} }
可以发现,这里自定义控件并没有直接在布局文件使用,原因是因为需要用户根据不同的需求通过自定义控件的构造函数传递给控件,所以通过ViewGroup.add()将ColorPickerView添加进去!
ColorPickerView colorPickerView new ColorPickerView(上下文); ,ll.addView (colorPickerView);
<强> -核心部分强>
就是colorPickerView的实现代码
package zxz.colorpickerdemo.view; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.LinearGradient; import android.graphics.Paint; import android.graphics.RectF; import android.graphics.Shader; import android.graphics.SweepGradient; import android.view.MotionEvent; import android.view.View; public class  ColorPickerView extends View  { ,private static  final float  PI =,(浮动),Math.PI; ,private Paint  paintCirclePhantom; ,private Paint  paintCircle; ,private Paint  paintCenterShadow; ,private Paint  paintCenter; ,private Paint  paintGrayShadow; ,private Paint  paintGray; ,private Paint  paintLightShadow; ,private Paint  paintLight; ,private double 缩放; ,private int [], arrColorGray; ,private final  int [], arrColorCircle =, new int [] {0 xffff0000, 0 xffff00ff, ,,0 xff0000ff 0 xff00ffff, 0 xff00ff00, 0 xffffff00, 0 xffff0000}; ,private boolean  mRedrawHSV; ,private boolean  IsPressCenter; ,private boolean  IsMoveCenter; ,private int CenterX =, 100; ,private int CenterY =, 100; ,private int CenterRadius =, 30; ,private String strColor =,““ ,private OnColorBackListener l; ,public ColorPickerView (Context 上下文),{ ,超级(上下文); ,float density =, getContext () .getResources () .getDisplayMetrics () .density; ,double Zoom =,(双),(density /, 2.0, +, - 0.5); null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null怎么在Android中通过自定义控件实现颜色选择器