Android Studio开发基础之自定义View组件
2024-10-16 00:08:27
一般情况下,不直接使用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);
}
}
最新文章
- 处理GitHub不允许上传大于100M文件问题
- 使用 gulp 搭建前端环境入门篇(转载)
- 使用hessian+protocol buffer+easyUI综合案例--登陆
- UVa 1394 约瑟夫问题的变形
- aspose.Cells 导出Excel
- C#应用Newtonsoft.Json操作json[2]-反序列化不定类型
- POJ-2785 4 Values whose Sum is 0(折半枚举 sort + 二分)
- $http POST 转字符串
- 关于Verilog 中的for语句的探讨
- VS2010 C#调用C++ DLL文件
- vmware 遇到 “无法打开内核设备 \\.\Global\vmx86” 解决
- Linkin大话PC常用快捷键
- Linux将端口设置进防火墙的白名单
- MS SQL 锁与事务
- 利用Python测量滴水湖的水面面积
- Spring中的@Async
- tomcat2章1
- Unity Blog 学习
- IA64与x64的区别
- python第四十四课——继承性之单继承
热门文章
- C++快速入门系列教程
- Esfog_UnityShader教程_UnityShader语法实例浅析
- Oracle基础笔记
- centos 解压jdk安装包方式安装jdk 出现 java/lang/NoClassDefFoundError: java/lang/Object 错误
- css3动画2(transform用法)
- MYSQL性能优化分享(分库分表)
- Ninject之旅之七:Ninject依赖注入
- 仿google art图片预览算法及demo(web版本)
- 关于C中struct和union长度的详解
- Hive集成HBase;安装pig