美文网首页
Android 开发的自定义View

Android 开发的自定义View

作者: kingZXY2009 | 来源:发表于2017-02-15 20:36 被阅读24次

    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布局文件,其代码修改为:

    android:layout_width = "match_parent"

    android:layout_height = "match_parent"

    android:background = "@drawable/bj"

    android:id = "@+id/mylayout">

    (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,一起交流和学习

    相关文章

      网友评论

          本文标题:Android 开发的自定义View

          本文链接:https://www.haomeiwen.com/subject/bytcwttx.html