安卓开发自定义View
来源:互联网 发布:卡巴斯基网络防火墙 编辑:程序博客网 时间:2024/05/20 20:18
1.自定义View
虽然Android提供了很多继承了View类的UI组件,但是在实际开发时,还会出现不足以满足程序需要的情况。这时用户就可以通过继承View类来开发自己的组件。开发自定义View组件的主要步骤如下:
(1)创建一个继承android.view.View类的View类,并且重写构造方法。
(2)根据需要重写相应的方法。
在代码中右击,弹出的快捷菜单中选择“代码/覆盖/实现方法”选项,将打开一个可以选择要覆盖或者要实现的方法的对话框,在该对话框中显示了可以呗重写的方法。只需要选中“被重写的方法”的选框,并单击“确定”按钮,Eclipse将自动重写指定的方法。一般情况下,不需要重写全部方法。
(3)在项目的活动中,创建并实例化自定义View类,并将其添加到布局管理器中。
2.经典案例
下面为大家通过一个实例来演示怎样开发自定义View类。
【例】自定义View组件实现跟随手指动的猫。
(1)在Eclipse中创建Android应用项目,命名为cat_View。
(2)打开res\layout目录下的main.xml布局文件,其代码修改为:
<?xml version ="1.0" encoding = "utf - 8"?>
<FrameLayout xmlns:android = "http://schemas.android.com/apk/res/android"
android:layout_width = "match_parent"
android:layout_height = "match_parent"
android:background = "@drawable/bj"
android:id = "@+id/mylayout">
</FrameLayout>
(3)创建一个名为 CatView的java类,该类继承android.view.View类,重写带一个参数Context的构造方法和onDraw()方法。其中,在构造方法中设置小猫咪的默认显示位置,在onDraw()方法中根据图片回执小猫咪,其代码为:
public class CatView extends View {
public float bitmapX;//小猫咪显示位置的X坐标
public float bitmapY;//小猫咪显示位置的Y坐标
public CatView(Context context) {
super(context);
bitmapX = 750;//默认小猫咪的显示位置的X轴
bitmapY = 500;//默认小猫咪的显示位置的Y坐标
}
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
Paint paint = new Paint();//创建并实例化paint的对象
Bitmap bitmap = BitmapFactory.decodeResource(this.getResource(),R.drawable.cat);//根据图片生成位图对象
canvas.drawBitmap(bitmap,bitmapX,bitmapY,paint);//绘制小猫咪
if (bitmap.isRecycled()){//判断图片是否回收
bitmap.recycled();//强制回收图片
}
}
}
(4)打开主活动文件MainActivity,它的onCreate()方法中,首先获取帧布局管理器并实例化小猫咪对象cat。接着为cat添加触摸事件监听器,在重写的触摸事件中设置cat的显示位置并重绘cat组件,最后将cat添加到帧布局管理器中,其代码为:
public class MainActivity extends Activity {
//第一次调用Activity
public void onCreate(Bundle saveInstanceState) {
super.onCreate(saveInstanceState);
setContentView(R.layout.main);
//获取帧布局管理器
Framelayout framelayout = (FrameLayout)findViewById(R.id.mylayout);
//创建并实例化CatView类
final CatView cat = new CatView (MainActivity.this);
//为小猫咪添加触摸事件监听
cat.setOnTouchListener(new OnTouchListener(){
public boolean onTouch(View v,MotionEvent event){
cat.bitmapX = event.getX();//小猫咪显示位置的X坐标
cat.bitmapY = event.getY();//小猫咪显示位置的Y坐标
cat.invalidate();//重绘 cat 组件
return true;
}
});
frameLayout.addView(cat);//将cat添加到布局管理器中
}
运行程序,当用鼠标在屏幕上拖拽时,小猫咪将跟着鼠标的拖拽轨迹移动。
欢迎所有的朋友加QQ群:364595326,一起交流和学习
- 安卓开发自定义View
- 安卓开发28:自定义View类
- 安卓开发自定义view初体验
- 安卓开发:继承View实现自定义View
- 安卓开发:组合View实现自定义View
- [安卓开发] 自定义View之一: 组合View
- 安卓自定义View
- 安卓自定义view
- 安卓自定义View
- 安卓自定义View
- 安卓自定义view
- 安卓开发-自定义view(二)-自定义属性
- 安卓开发之自定义View------> 圆形头像ImageView
- 安卓开发:使用selector自定义View样式
- 安卓开发之自定义View通过Drawable绘制图标
- 安卓开发入门之自定义View(翻译)
- 安卓自定义View组件
- 安卓常用自定义View
- 100. Same Tree |判断二叉树相同
- 序列化的作用
- 构建自动化前端样式回归测试——BackstopJS篇
- 算法训练 出现次数最多的整数(Hashtable)
- iOS调试常见错误 如:symbol(s) not found for architecture x86_64
- 安卓开发自定义View
- H - Basic Data Structure HDU - 5929
- idea cannot resolve symbol
- 自定义TextView实现设置drawable图片大小
- 关于WNDCLASSEX窗口类
- lab颜色空间
- SQL 测试用
- 2. Add Two Numbers
- Android通过反射的方法获取手机存储设备的状态信息