如何在Android中自定义的观点

  介绍

如何在Android中自定义?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

<强>一、拓展谷歌提供的系统控件

假如我们要对Textview控件进行拓展,首先我们要定义一个类继承Textview,选择性的重写它的onDraw (), onMeasure (), onTouchEvent()等方法,其中,onDraw()负责对图像的绘制,onMeasure()负责测量位置,onTouchEvent()负责设置触摸的事件。当我们想直接绘制出有背景颜色的Textview时,可以在类中定义画笔,在onDraw()进行绘制。代码如下:

Paint  paint1=new 油漆();,//定义画笔   paint1.setColor (Color.YELLOW);   paint1.setStyle (Paint.Style.FILL);

然后,通过以下的代码,就可以绘制出一个带矩形框的Textview,但是需要在绘制完成后在调用父类的onDraw(),因为是在系统控件上拓展,所以,还要有其原来的功能。

@Override   protected 才能;void  onDraw (Canvas 画布),{   ,,,canvas.drawRect (0, 0, getMeasuredWidth (), getMeasuredHeight (), paint1);//绘制矩形   ,,,canvas.save ();   ,,,super.onDraw(画布);   ,,,canvas.restore ();   以前,,}

使用帆布对象就可以进行绘图了,对画布的讲解,我将会在下一篇博客讲解。

然后,我们只需要在布局文件中加入自定义的控件即可,在布局文件中,自定义视图的名字就是自定义控件类的包名加上类名,假设定义CustomTextview类继承TextView,例子如下:

& lt; com.example.myapplication.View.CustomTextView   ,,,android: layout_width=皐rap_content"   ,,,android: layout_height=癿atch_parent"祝辞& lt;/com.example.myapplication.View.Buttonbtn>

<强>二,将系统提供的控件组合在一起

除了拓展原有的控件以外,我们还可以将控件组合成一个新的控件使用。首先,我们先定义一个新的布局文件,并把Imageview和Textview加入,代码如下。

& lt; Imageview   android:才能id=癅 + id/iv"   android:才能layout_width=?0 dp"   android:才能layout_height=?0 dp"   android: src=https://www.yisu.com/zixun/才能“@mipmap/ic_launcher "/>      

然后我们定义一个类继承LinearLayout,在类的构造方法中对控件和布局进行初始化。

public  void  init (Context 上下文),{   ,,,//指定线性布局的显示方式,垂直   ,,,setOrientation(垂直);   ,,,//设置用户期望的布局方式   ,,,LayoutParams  mLayoutParams =, new  LayoutParams (ViewGroup.LayoutParams.WRAP_CONTENT ViewGroup.LayoutParams.WRAP_CONTENT也);   ,,,setLayoutParams (mLayoutParams);   ,,,setGravity (Gravity.CENTER);   ,,,setPadding (4,, 4, 4, 4);   ,,,//设置其布局文件   ,,,View  mButtonbtnView =, LayoutInflater.from(上下文).inflate (layout.botton_btn_view,,这个,,真的);   ,,,mImageView =, mButtonbtnView.findViewById (id.iv);   ,,,mTextView =, mButtonbtnView.findViewById (id.tv);   以前,,}

接下来,它的使用方法就和拓展控件的方法一样了,直接在布局文件中,加入控件即可。

& lt; com.example.myapplication.View.Buttonbtn   ,,,android: layout_width=皐rap_content"   ,,,android: layout_height=癿atch_parent"祝辞& lt;/com.example.myapplication.View.Buttonbtn>

<强>三、重写视图来实现全新的控件

当系统原生的控件无法满足我们需求时,我们就可以定义一个新的控件来完成需要的功能。创建一个新的控件,需要继承视图类,其难点主要在于绘制控件和实现交互。在继承视图类时,我们还需要重写它的onDraw (), onMeasure (), onTouchEvent()来实现绘制,测量和触摸事件。

onDraw()绘制就是在画布上对象上调用其一系列方法进行绘图,绘制控件的形状。

onMeasure ()

下面,我来讲讲onMeasure()。在绘制观点之前,我们需要告诉系统我们需要画一个多大的视图以及他的位置,这就是onMeasure()进行的了。首先,我们来了解一下测量的三种模式:

完全:精确值模式,在指定视图具体数值的时候会用的到。

AT_MOST:最大值模式,将控件设置为“wrap_content"用到,它会根据子控件或者内容变化而变化。

不明:绘制控件想要多大就可以多大。

如何在Android中自定义的观点