一般情况下,不直接使用View和ViewGroup类,而是使用使用其子类。例如要显示一张图片可以用View类的子类ImageView,开发自定义View组件可分为两个主要步骤:

一、创建一个继承自android.view.View类的View类,并且重写构造方法。

如下,新建一个名为MyView.Java的Java类文件,重写一个带Context的构造方法和onDraw()方法(用来重新绘制Activity窗口的背景)。

package com.example.lhb.contentprovider1;

import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.view.View; public class MyView extends View{
public MyView(Context context){
super(context);
} @Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
Paint paint=new Paint();
Bitmap bitmap= BitmapFactory.decodeResource(this.getResources(),R.drawable.bg);
canvas.drawBitmap(bitmap,0,0,paint);
if (bitmap.isRecycled()){
bitmap.recycle();
}
}
}

二、在项目活动中,创建并实例化自定义的MyView类,并将其添加到布局管理器中即可。

如下,在主活动的onCreate()方法中,首先获取帧布局管理器,并创建MyView对象,然后添加触摸监听事件。

package com.example.lhb.contentprovider1;

import android.app.Activity;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.widget.FrameLayout; public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); FrameLayout frameLayout=(FrameLayout)findViewById(R.id.layout); final MyView myView=new MyView(MainActivity.this);
myView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
myView.invalidate();
return true;
}
}); frameLayout.addView(myView);
}
}

最新文章

  1. 处理GitHub不允许上传大于100M文件问题
  2. 使用 gulp 搭建前端环境入门篇(转载)
  3. 使用hessian+protocol buffer+easyUI综合案例--登陆
  4. UVa 1394 约瑟夫问题的变形
  5. aspose.Cells 导出Excel
  6. C#应用Newtonsoft.Json操作json[2]-反序列化不定类型
  7. POJ-2785 4 Values whose Sum is 0(折半枚举 sort + 二分)
  8. $http POST 转字符串
  9. 关于Verilog 中的for语句的探讨
  10. VS2010 C#调用C++ DLL文件
  11. vmware 遇到 “无法打开内核设备 \\.\Global\vmx86” 解决
  12. Linkin大话PC常用快捷键
  13. Linux将端口设置进防火墙的白名单
  14. MS SQL 锁与事务
  15. 利用Python测量滴水湖的水面面积
  16. Spring中的@Async
  17. tomcat2章1
  18. Unity Blog 学习
  19. IA64与x64的区别
  20. python第四十四课——继承性之单继承

热门文章

  1. C++快速入门系列教程
  2. Esfog_UnityShader教程_UnityShader语法实例浅析
  3. Oracle基础笔记
  4. centos 解压jdk安装包方式安装jdk 出现 java/lang/NoClassDefFoundError: java/lang/Object 错误
  5. css3动画2(transform用法)
  6. MYSQL性能优化分享(分库分表)
  7. Ninject之旅之七:Ninject依赖注入
  8. 仿google art图片预览算法及demo(web版本)
  9. 关于C中struct和union长度的详解
  10. Hive集成HBase;安装pig