Android自定义组件跟随自己手指主动画圆
程序员文章站
2024-01-04 11:41:22
本文实例为大家分享了android实现跟随手指画圆的具体代码,供大家参考,具体内容如下
首先自己定义一个view子类:
package com.exampl...
本文实例为大家分享了android实现跟随手指画圆的具体代码,供大家参考,具体内容如下
首先自己定义一个view子类:
package com.example.androidtest0.myview; import android.content.context; import android.graphics.canvas; import android.graphics.color; import android.graphics.paint; import android.util.attributeset; import android.view.motionevent; import android.view.view; public class drawview extends view { public float currentx = 40; public float currenty = 50; //定义、并创建画笔 paint p = new paint(); public drawview(context context) { super(context); } public drawview(context context, attributeset attrs) { super(context, attrs); } @override protected void ondraw(canvas canvas) { super.ondraw(canvas); //设置画笔的颜色 p.setcolor(color.red); //绘制一个小球 canvas.drawcircle(currentx, currenty, 15, p); } /** * 为该组件的触碰事件重写事件处理方法 */ @override public boolean ontouchevent(motionevent event) { //改动currentx、currenty两个属性 currentx = event.getx(); currenty = event.gety(); //通知当前组件重绘自己 invalidate(); return true; } }
主界面xml:
custom_layout.xml
<?xml version="1.0" encoding="utf-8"?> <linearlayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/root" android:orientation="vertical" > </linearlayout>
主activity:
package com.example.androidtest0; import com.example.androidtest0.myview.drawview; import android.app.activity; import android.os.bundle; import android.widget.linearlayout; public class customview extends activity { @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.custom_layout); //获取布局文件里linearlayout容器 linearlayout root = (linearlayout)findviewbyid(r.id.root); //创建drawview组件 final drawview drawview = new drawview(this); //设置自己定义组件的最小宽度、高度 drawview.setminimumwidth(10); drawview.setminimumheight(10); root.addview(drawview); } }
效果:
除此之外:
还能够用xml的方式:也是首先建一个view的子类。和上面一样。
然后主界面xml例如以下:
<?xml version="1.0" encoding="utf-8"?> <linearlayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/root" android:orientation="vertical" > <com.example.androidtest0.myview.drawview android:layout_width="match_parent" android:layout_height="match_parent" /> </linearlayout>
主activity文件例如以下:
package com.example.androidtest0; import com.example.androidtest0.myview.drawview; import android.app.activity; import android.os.bundle; import android.widget.linearlayout; public class customview extends activity { @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.custom_layout); } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。