怎么在Android中通过自定义控件实现颜色选择器

  介绍

这期内容当中小编将会给大家带来有关怎么在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中通过自定义控件实现颜色选择器