Android编程自定义组件实例详解
作者:听着music睡 时间:2022-12-20 13:11:58
本文实例讲述了Android编程自定义组件。分享给大家供大家参考,具体如下:
在Android中,所有的UI界面都是由View类和ViewGroup类及其子类组合而成。其中,View类是所有UI组件的基类,而ViewGroup类是容纳这些UI组件的容器。
其本身也是View类的子类。
在实际开发中,View类还不足以满足程序所有的需求。这时,便可以通过继承View类来开发自己的组件。
开发自定义组件的步骤:
1、创建一个继承android.view.View类的View类,并且重写构造方法。
2、根据需要重写相应的方法。
3、创建并实例化自定义View类,并将其添加到布局管理器中。
现在来学习使用自定义类
1、首先创建一个java文件来绘制图片
package myview;
import com.example.allcode.R;
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 float bitmipx;
public float bitmipy;
public MyView(Context context) {
super(context);
bitmipx=550;
bitmipy=550;
// TODO Auto-generated constructor stub
}
@Override
protected void onDraw(Canvas canvas) {
// TODO Auto-generated method stub
super.onDraw(canvas);
//创建并实例化Paint对象
Paint paint = new Paint();
//根据图片生成位图对象
Bitmap bitmap = BitmapFactory.decodeResource(this.getResources(), R.drawable.image_equip_baibao_baicaodan);
canvas.drawBitmap(bitmap, bitmipx,bitmipy, paint); //绘制图片
if(bitmap.isRecycled()) //判断图片是否可以回收
{
bitmap.recycle(); //强制回收图片
}
}
}
2、在主activity中实例化图片,并添加触摸事件
package myview;
import com.example.allcode.R;
import android.app.Activity;
import android.os.Bundle;
import android.provider.ContactsContract.CommonDataKinds.Event;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.widget.FrameLayout;
public class ShowMyView extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.showmyview);
FrameLayout framelayout = (FrameLayout) findViewById(R.id.showview);
final MyView myview = new MyView(ShowMyView.this); //创建并示例化MyView类
//添加触摸事件
myview.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
myview.bitmipx=event.getX();
myview.bitmipy=event.getY();
myview.invalidate();//重绘自定义组件
return true;
}
});
framelayout.addView(myview);
}
}
对应的布局文件
<?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:id="@+id/showview" //不要忘记这一行
>
</FrameLayout>
效果图如下:
希望本文所述对大家Android程序设计有所帮助。
标签:Android,自定义组件
0
投稿
猜你喜欢
java实现切割wav音频文件的方法详解【附外部jar包下载】
2021-07-08 22:29:56
android fm单体声和立体声的切换示例代码
2023-04-19 11:06:56
Android编程画图之抗锯齿解决方法
2022-12-17 12:03:54
Java读取.properties配置文件方法示例
2023-08-24 16:32:56
C字符串操作函数的实现详细解析
2022-10-26 16:28:37
详解Java中类的加载与其初始化
2023-06-21 04:56:45
基于Spring Boot使用JpaRepository删除数据时的注意事项
2023-04-03 09:05:39
Mybatis-Plus进阶分页与乐观锁插件及通用枚举和多数据源详解
2023-11-23 11:00:58
详解java并发之重入锁-ReentrantLock
2021-08-03 03:58:08
C#实现类似新浪微博长URL转短地址的方法
2023-06-02 12:59:28
Android实现过渡动画、引导页 Android判断是否第一次启动App
2023-09-08 06:08:11
Java中的private、protected、public和default的区别(详解)
2023-01-10 01:55:51
Android热修复及插件化原理示例详解
2023-03-07 01:37:52
ObjectMapper 如何忽略字段大小写
2023-07-31 07:07:18
解决 INSTALL FAILED CONFLICTING PROVIDER的问题方法
2023-01-31 11:42:49
java Timer测试定时调用及固定时间执行代码示例
2023-12-09 14:36:44
Android DrawerLayout带有侧滑功能的布局类(1)
2023-04-09 20:32:07
Java内部类及其特点的讲解
2023-06-09 19:39:41
System.currentTimeMillis()计算方式与时间的单位转换详解
2022-08-09 04:55:43
实例讲解Java并发编程之闭锁
2023-10-25 14:25:07