4.1.3自定义组件 >在Android中,可以通过view类的子类自定义 组件,然后再添加到布局界面中。 【例4-3】自定义一个组件,再通过布局界面显示出来。 主要设计步骤如下: (1)编写View子类:TestView.java (2)把TestView添加到布局界面中 (3)在主程序MainActivity.java中建立TestView>对象 与布局文件的关联
4.1.3 自定义组件 ➢ 在Android中,可以通过view类的子类自定义 组件,然后再添加到布局界面中。 【例4-3】自定义一个组件,再通过布局界面显示出来。 主要设计步骤如下: (1)编写View子类:TestView.java (2)把TestView添加到布局界面中 (3)在主程序MainActivity.java中建立TestView对象 与布局文件的关联
1.新建java文件,编写View子类:TestView.java class TestView extends View public Testview(Context context,AttributeSet attrs) super(context,attrs);} /*重写View的抽象方法onDraw()方法*/ protected void onDraw(Canvas canvas) canvas.drawColor(Color.CYAN);/设置组件的背景颜色为青色 Paint paint=new Paint(); /定义画笔 paint.setStyle(Paint.Style.FILL);/设置画实心图形 paint.setAntiAlias(true);/去锯齿 paint.setColor(Color.BLUE);/*设置画笔颜色为蓝色*/ canvas.drawCircle(100,120,30,paint);/*圆心为(100,120),半径为30的实心圆*/ paint.setColor(Color.W阳ITE);/*在上面的实心圆上画一个小白点*/ canvas.drawCircle(91,111,6,paint);
1. 新建java文件,编写View子类:TestView.java class TestView extends View { public TestView(Context context, AttributeSet attrs) { super(context, attrs); } /* 重写 View 的抽象方法 onDraw()方法 */ protected void onDraw(Canvas canvas) { canvas.drawColor(Color.CYAN); //设置组件的背景颜色为青色 Paint paint=new Paint(); //定义画笔 paint.setStyle(Paint.Style.FILL); //设置画实心图形 paint.setAntiAlias(true); //去锯齿 paint.setColor(Color.BLUE); /*设置画笔颜色为蓝色*/ canvas.drawCircle(100,120,30,paint); /*圆心为(100,120),半径为 30 的实心圆*/ paint.setColor(Color.WHITE); /*在上面的实心圆上画一个小白点*/ canvas.drawCircle(91,111,6,paint); } }
2.在表现层布局文件activity main.ml中,添加所设计 的组件TestView类 <com.example.ex4_3.TestView android:id="@+id/testviewl" android:layout_width="wrap_content" android:layout height="wrap_content
2. 在表现层布局文件activity_main.xml中,添加所设计 的组件TestView类 <com.example.ex4_3.TestView android:id="@+id/testview1" android:layout_width="wrap_content" android:layout_height="wrap_content" />
这时,可以在编辑器的预览中看到所自定义的组件. activity_main.xl×c MainActivity.java×cTestView.java× ▣Layouts MainActivity~0、W23- □FraneLayout LinearLayout (Horiz 图,回国 回@Q目5羲 LinearLayout (Verti ▣TableLayout ☐Tab1eRow 用GridLayout RelativeLayout E4.3 □idgets AD Plain TextView Ab Large Text Ab就edium Text AD Snall Text or Button Snall Button RadioButton ☑CheckBox Svitch ToggleButton InageButton 圆InageViev -ProgressBar (Large) -ProgressBar (Nornal PxogressBar(5ma11 ProgressBar (Horizo SeekBar DesignText
这时,可以在编辑器的预览中看到所自定义的组件
3.在主程序MainActivity.java中建立TestView对象与布 局文件的关联 package com.example.ex4_3; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; public class MainActivity extends Activity TestView tView null; @Override public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); tView =(TestView)findViewById(R.id.testviewl); setContentview(R.layout.activity main);
3. 在主程序MainActivity.java中建立TestView对象与布 局文件的关联 package com.example.ex4_3; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; public class MainActivity extends Activity { TestView tView = null; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); tView =(TestView)findViewById(R.id.testview1); setContentView(R.layout.activity_main); } }