网站首页 网站导航 课程中心
新闻中心
您所在的位置:Android培训 > 新闻中心 > Android开发自定义View

Android开发自定义View

来源:中软卓越 日期:2017-02-16 14:46 人气:
  虽然Android提供了很多继承了View类的UI组件,但是在实际开发时,还会出现不足以满足程序需要的情况。这时用户就可以通过继承View类来开发自己的组件。中软卓越Android培训开发自定义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添加到布局管理器中
  }
  运行程序,当用鼠标在屏幕上拖拽时,小猫咪将跟着鼠标的拖拽轨迹移动。虽然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添加到布局管理器中
  }
  运行程序,当用鼠标在屏幕上拖拽时,小猫咪将跟着鼠标的拖拽轨迹移动。
  中软国际卓越培训专注于Java、UI设计、iOS、Android、php、软件测试、.net、嵌入式、C语言、大数据,做为中国顶尖上市企业旗下最大的IT职业教育集团,国内唯一具备软件开发背景的企业级培训机构,为学员提供了便捷、有效的学习途径。中软卓越培训中心有强大的企业背景、真实的企业环境,专业打造一流软件人才。如果你对于培训怎么样还有疑问,或者想了解更多课程详情,都可以点击咨询网站在线老师或者亲自前来中软卓越实地考察咨询,我们会给你最细致的解答。学习安卓开发,就来中软卓越

营业执照 版权所有©Copyright 2008-2017,北京中软国际教育科技股份有限公司, All Rights Reserved. ICP备案号:京ICP备14058756号-2

| | 分类导航 | 关于我们