搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
凡人多烦事01
这个屌丝很懒,什么也没留下!
关注作者
热门标签
jquery
HTML
CSS
PHP
ASP
PYTHON
GO
AI
C
C++
C#
PHOTOSHOP
UNITY
iOS
android
vue
xml
爬虫
SEO
LINUX
WINDOWS
JAVA
MFC
CEF3
CAD
NODEJS
GIT
Pyppeteer
article
热门文章
1
软件测试行业年度核心热点数据大揭秘(2018 )_软件测试今年潮流技术
2
头条安卓面试,重磅消息,超强Android进阶路线知识图谱
3
UE5中简易的UI管理框架(c++版,UE5.1)_ue ui管理
4
OpenHarmony开发实战:音乐播放器(ArkTS)_arkts current state is not stopped or initialized,
5
【人脸表情识别】基于matlab GUI微表情识别系统【含Matlab源码 1808期】_如何用matlab人脸表情生成
6
如何删除Windows我的电脑地址栏搜索记录_我的电脑搜索记录怎么删除
7
Elasticsearch-7.8.0 创建索引底层源码分析(1)_elasticsearch 源码解析
8
用c语言写一个人脸识别代码
9
hive 支持的文件格式_hie 文件格式
10
一篇文章吃透背包问题!(细致引入+解题模板+例题分析+代码呈现)
当前位置:
article
> 正文
android 自定义view的简单实例_安卓自定义view简单实例
作者:凡人多烦事01 | 2024-06-04 20:51:28
赞
踩
安卓自定义view简单实例
1,提取和封装 使用抽象方法
package com.example.androidmyview.v3;
import android.content.Context;
import android.graphics.Canvas;
import android.util.AttributeSet;
import android.view.View;
public abstract class BaseView extends View {
private mythread thread;
public BaseView(Context context) {
super(context);
}
public BaseView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public BaseView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
@Override
protected void onDraw(Canvas canvas) {
if (thread == null) {
thread = new mythread();
thread.start();
}else {
drawsub(canvas);
}
}
/**
* 绘制方法
* @param canvas
*/
protected abstract void drawsub(Canvas canvas);
/**
* 逻辑运算
*/
protected abstract void Logic();
/**
* 自定义线程
* @author Administrator
*
*/
class mythread extends Thread {
@Override
public void run() {
while (true) {
Logic();
//从新绘制
postInvalidate();
try {
Thread.sleep(30);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
};
}
-----------------------------------------------
package com.example.androidmyview.v3;
import java.util.Random;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.RectF;
import android.util.AttributeSet;
public class LogicView extends BaseView{
private Paint paint;
private float x = 0;
private static String text ="LogicView";
private RectF rectf;
private float sweepAngle =0;
private Random random;
public LogicView(Context context) {
super(context);
}
public LogicView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public LogicView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
@Override
protected void drawsub(Canvas canvas) {
paint = new Paint();
paint.setTextSize(30);
rectf = new RectF(0,60,100,160);
canvas.drawText(text, x, 30, paint);
canvas.drawArc(rectf, 0, sweepAngle, true, paint);
}
@Override
protected void Logic() {
random = new Random();
x += 3;
if (x>getWidth()) {
x=0-paint.measureText(text);
}
sweepAngle++;
if (sweepAngle>360) {
sweepAngle=0;
}
//产生随机数
int r = random.nextInt(256);
int g = random.nextInt(256);
int b = random.nextInt(256);
//颜色不断变化
paint.setARGB(255, r, g, b);
}
}
---------------------------------------------
布局文件采用framelayout
<FrameLayout xmlns:android="
http://schemas.android.com/apk/res/android
"
xmlns:tools="
http://schemas.android.com/tools
"
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<com.example.androidmyview.v1.Myview
android:layout_width="match_parent"
android:layout_height="match_parent"
android:visibility="gone"/>
<com.example.androidmyview.v3.LogicView
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
</FrameLayout>
--------------------------------------------------------
使用xml文件解析自定义view
声明:
本文内容由网友自发贡献,转载请注明出处:
【wpsshop】
推荐阅读
article
Hive
SQL 中ARRAY或MAP类型数据处理:
lateral
view
explode
()/p...
在对表数据进行批量处理过程中,常常碰上某个字段是一个array或者map形式的字段,一列数据的该字段信息同时存在多个值,...
赞
踩
article
【
Android
应用开发】
Ubuntu
安装
Android
Studio
(旧版本|仅作参考)...
① 安装, 配置
Android
Studio
,
下载
SDK, 配置SDK,
下载
配置 gradle;② 安装JDK,...
赞
踩
article
Git崩溃,
Android
studio
崩溃 “Too
many
open
files
in sy...
原因:Mac文件系统允许最大打开的文件数有限制修改:新建/etc/sysctl.conf文件 添加: kern.maxf...
赞
踩
article
Android
日志系统(
Logcat
)
的
JNI C、
C++
或
java
实现分析_交叉编译安卓14.0...
安卓或JNI
logcat
使用方法讲解_交叉编译安卓14.0
的
logcat
代码
交叉编译安卓14.0
的
logcat
代码
...
赞
踩
article
Android
TextView
IndexOutOfBoundsException
: setSpa...
在设置了clickspan的textview 出现了下标越界问题。
TextView
IndexOutOfBoundsEx...
赞
踩
article
Activity
启动
流程(Android 10源码
分析
)_
android
activity
启动
过程一...
下面的源码
分析
,将按照上图的流程图一步一步
分析
一、
启动
进程
启动
Activity
先从start
Activity
开始,点进s...
赞
踩
article
Android
源码
解读-
应用
是如何
启动
的...
作为多年的
Android
开发,写了不少
应用
,但是一个App到底是怎么
启动
起来的?你要说桌面点一下就
启动
了,那也对。但...
赞
踩
article
Android
Studio
gradle
手动下载配置_
android
gradle
下载...
项目同步时,有时候会遇到
Android
Studio
第一步下载
gradle
就是连接失败的问题。这种情况,我们可以手动去g...
赞
踩
article
Android
Launcher3
各
启动
场景
源码
分析...
Launcher3
是
Android
系统提供的默认桌面应用(Launcher),它的
源码
路径在**“packages/ap...
赞
踩
article
【
Android
启动
过程】
Activity
启动
源码
分析
(
AMS
->
Activity
Thr...
一、
Activity
启动
源码
分析
(
AMS
|
Activity
ManagerService )1、Instrume...
赞
踩
article
Android
Gradle
开发
与
应用
(一)
:
Gradle
基础...
Android
Gradle
开发
与
应用
系列
:
介绍
Gradle
的基础知识_android gradleandroid...
赞
踩
article
Android
Gradle
插件
对应
的
Gradle
所需
版本
,
Android
核心知识点_
gradle
...
学习技术是一条慢长而艰苦
的
道路,不能靠一时激情,也不是熬几天几夜就能学好
的
,必须养成平时努力学习
的
习惯。所以:贵在坚持!...
赞
踩
article
Android
Date
,时间字符串、时间戳等相互转换使用_
android
new
simpleda...
在软件开发中,我们会经常遇到各种时间的显示及判断,这就需要我们对获取的数据进行转换。“yyyy-MM-dd HH:mm:...
赞
踩
article
Flutter
与 原生交互(
Android
),靠着这份900多页
的
PDF
面试
整理...
**java 发起通信*/@Override});/**
Flutter
发起
的
通信@param o*/@Override...
赞
踩
article
Android
UI
自动化
测试
框架—
SoloPi
简介...
软件
测试
简介软件
测试
是伴随着软件开发一同诞生的,随着软件规模大型化,结构复杂化,软件
测试
也从最初的简单“调试”,发展到...
赞
踩
article
Jetpack
Compose
:
Android
中的声明式
UI
_
android
声明式
ui
...
Jetpack
Compose
被官方称为
Android
用于构建原生
UI
的现代工具包,它简化并加速了 Andro...
赞
踩
article
android
studio
打开
github
项目
总是错误解决方案_no
access
to gith...
吐槽:相信很多人跟我一样,在看到很多有趣的
项目
都想下载下来,看看源码,看看效果,然而受制于中国的的网(google和安卓...
赞
踩
article
Android
——
Handler
一篇就看懂
_
android
handler
...
Android
handler
的详细讲解
_
android
handler
android
handler
...
赞
踩
article
Android
图表开发
开源
库 MP
Android
Chart
使用
总结...
MP
Android
Chart 集成
使用
过程详解
Android
图表开发
开源
库 MP
Android
Chart
使用
总结 ...
赞
踩
article
hive
的
函数
lateral
view
用法详解_
hive
lateral
view
...
hive
函数
lateral
view
主要功能是将原本汇总在一条(行)的数据拆分成多条(行)成虚拟表,再与原表进行笛卡...
赞
踩
相关标签
hive
数据仓库
sql
大数据
Ubuntu
Android Studio
hanshuliang
gradle
Oracle JDK
android
java
c语言
移动开发
Android
架构
Framework
性能优化
android studio
ide
车载系统
系统架构
系统安全
AMS
ActivityStarter