Android编程自定义组件实例详解
作者:听着music睡 发布时间:2022-12-20 13:11:58
标签:Android,自定义组件
本文实例讲述了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程序设计有所帮助。


猜你喜欢
- 将10个整数按由小到大的顺序排列#include <iostream>using namespace std;int main(
- Android原生控件只有横向进度条一种,而且没法变换样式,比如原生rom的样子很丑是吧,当伟大的产品设计要求更换前背景,甚至纵向,甚至圆弧
- 在Spring 5 Webflux中,配置CORS,可以通过自定义WebFilter实现:注:此种写法需真实跨域访问,监控header中才会
- AOP是Spring中的面向切面的编程,这里简单感受一下如何在xml文件中配置一个切面。如上图所示,配置一个切面的主要思路有以下几个步骤。1
- 直接插入排序<code class="language-java hljs ">import java.ut
- 这篇文章主要介绍了Java import导入及访问控制权限修饰符过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考
- 导读Spring Boot应用可以使用spring-boot-maven-plugin快速打包,构建一个可执行jar。Spring Boot
- 深拷贝是指源对象与拷贝对象互相独立,其中任何一个对象的改动都不会对另外一个对象
- android大家都有很多需要用户上传头像的需求,有的是选方形,有的是圆角矩形,有的是圆形。首先我们要做一个处理图片的自定义控件,把传入的图
- 编写C#程序的时候,我们都遇到过配置文件,而如今绝大多数的配置文件都是用XML写的。所以在处理的时候就需要操作XML文件。那么C#如何操作X
- Mybatis有什么用前两天跟阿里的大牛聊天,他讲到对于性能要求高,需求变化多的互联网项目来说,用在sql优化上的开发时间是大头,有时候代码
- java 根据经纬度获取地址实现代码实现代码:public class GetLocation { public
- 在5.2.1节和5.2.2节介绍了<a>标签以及TextView自动识别的特殊文本(网址、电话号、Email等),这些都可以通过
- 前言之前用springboot的时候,只知道捕获异常使用try{}catch,一个接口一个try{}catch,这也是大多数开发人员异常处理
- 实现的效果图,可左右滑动:一、先在将Gallery标签放入:<?xml version="1.0" encodin
- Java反射机制深入理解一.概念 反射就是把Java的各种成分映射成相应的Java类。Class类的构造方法是private,由JVM创建。
- 写在前面很久以前就听nice0e3师傅说打Fastjson可以试试C3P0,当时还不会java(虽然现在也没会多少)也就没有深究。最近调试F
- 这篇文章主要介绍了Springboot2.0处理自定义异常并返回json,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考
- WPF实现 Gitee泡泡菜单框架使用大于等于.NET40;Visual Studio 2022;项目使用 MIT 开源
- 本文实例为大家分享了在Android中如何实现下拉导航选择菜单效果的全过程,供大家参考,具体内容如下关于下拉导航选择菜单效果在新闻客户端中用