Android中的View组件的作用类似于Swing编程中的Panel。对于Android应用的其它UI组件来说,它们都继承自View组件。基于Android UI组件的实现原理,开发者完可以通过继承View来派生自定义组件。
下面以一个实例来说明如何开发自定义的UI组件:
实例:跟随手指的小球——开发自定义的UI组件,这个组件将会在指定位置绘制一个小球,这个位置可以动态改变。当用户通过手指在屏幕上拖动时,程序监听到这个手指事件,并把手指动作的位置传入自定义UI组件,并通知该组件重绘。
| 12345678910111213141516171819202122232425262728293031323334353637 | <span style="font-size:14px;">public class DrawView extends View {private float currentX=40;private float currentY=50;//定义并创建画笔Paint p=new Paint(); public DrawView(Context context) {super(context);} public DrawView(Context context,AttributeSet set) {super(context,set);}@Overrideprotected void onDraw(Canvas canvas){//设置画笔的颜色p.setColor(Color.RED);//绘制圆canvas.drawCircle(currentX,currentY,15,p);}@Overridepublic boolean onTouchEvent(MotionEvent event) {//获得(更新)位置坐标this.currentX=event.getX();this.currentY=event.getY();//通知当前组件重绘this.invalidate();return true;} }</span> |
| 123456789101112131415161718192021 | <span style="font-size:14px;">public class MainActivity extends Activity {private LinearLayout layout=null;private DrawView draw=null;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);super.setContentView(R.layout.activity_main);//获取LinearLayout容器 this.layout=(LinearLayout) super.findViewById(R.id.layout);//创建DrawView组件this.draw=new DrawView(this);//设置组件相关属性draw.setMinimumWidth(300);draw.setMinimumHeight(500);this.layout.addView(draw);}}</span> |
| 12345678910111213 | <span style="font-size:14px;color:#000000;"><LinearLayout xmlns:android="//schemas.android.com/apk/res/android"android:id="@+id/layout"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MainActivity" ><<strong>nku.jerry.demo.DrawView </strong>android:layout_width="match_parent"android:layout_height="match_parent" /> </LinearLayout></span> |
此时,Activity程序中只需如下代码即可:
| 1234567891011 | <span style="font-size:14px;">public class MainActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);super.setContentView(R.layout.activity_main); }}</span> |
本文标题:Android学习技巧之自定义UI组件,责任编辑:宏鹏,来源:武汉北大青鸟鲁广校区栏目,于06-02发布于北大青鸟鲁广校区。Android中的View组件的作用类似于Swing编程中的Panel。对于Android应用的其它UI组件来说,它们都继承自View组件。基于Android UI组件的实现原理,开发者完可以通过继承View来派生自定义组件
预约将免费领取7天课程体验卡
只为您方便就学
专业老师24小时1对1学习指导
定制专属于你的专属学习方案
微信号:17740513250
微信号:17740513250