Android学习笔记之自定义UI组件
16lz
2022-01-20
Android中的View组件的作用类似于Swing编程中的Panel。对于Android应用的其它UI组件来说,它们都继承自View组件。基于Android UI组件的实现原理,开发者完全可以通过继承View来派生自定义组件。
下面以一个实例来说明如何开发自定义的UI组件:
实例:跟随手指的小球——开发自定义的UI组件,这个组件将会在指定位置绘制一个小球,这个位置可以动态改变。当用户通过手指在屏幕上拖动时,程序监听到这个手指事件,并把手指动作的位置传入自定义UI组件,并通知该组件重绘。
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;}}
在Activity类中,我们把该组件添加到指定容器中。
public class MainActivity extends Activity { private LinearLayout layout=null; private DrawView draw=null; @Override protected 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); }}
当然,为了在手机屏幕上显示出自定义的DrawView组件,我们也可以不在Activity类中动态添加,而是选择在XML布局文件中添加该组件(实际上更推荐这种方法)。
<nku.jerry.demo.DrawView android:layout_width="match_parent" android:layout_height="match_parent" />
注意,XML文件中DrawView的路径要写完整,否则会提示找不到该组件。
此时,Activity程序中只需如下代码即可:
public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); super.setContentView(R.layout.activity_main); }}
更多相关文章
- 【Android的从零单排开发日记】之入门篇(十一)——Android的Intent
- Android周学习Step By Step(5)--常用widget组件
- Android省市区三级联动滚轮选择(真实项目中提取出来的组件)
- 深度探索Android应用程序的基本原理
- 《Android/OPhone 开发完全讲义》样章和目录下载
- Android应用程序四大组件
- [Android官方API阅读]___
- Android(安卓)里的Intent是什么意思
- Android(安卓)组件化架构概要