package org.gmy.view.config;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.widget.TextView;
public class ConfigurationView extends View {
private Paint paint;
private Paint font_Paint;
// 数值显示的偏移量
private int numWidth = 9;
// 起始高度为 最大高度减去 80 【注意这里的高度是反的,也就是说,y轴是逐渐减少的】
private float startHeight = Configuration.HEIGHT-80;
private float endHeight = startHeight;
// 柱状图的宽度
private int viewWidth = 20;
// 组态图的高度 【显示的数值,100 为 100%】
private int maxSize = 43;
private int indexSize = 0;
// 要显示的模式 【类型,比如:℃和百分比等】
private String displayMode = "%";
// 模式
private boolean mode = false;
// 线程控制
private boolean display = true;
// 是否开启动画效果
private boolean animMode = true;
/**
*
* @param context
* @param maxSize 需要显示的数值
* @param displayMode 显示的类型
*/
public ConfigurationView(Context context, int maxSize, String displayMode) {
super(context);
this.maxSize = maxSize;
this.displayMode = displayMode;
init();
}
/**
*
* @param context
* @param maxSize 需要显示的数值
* @param displayMode 显示的类型
* @param mode 显示的模式,默认为false,数值越高,颜色越偏向红色。为true反之
*/
public ConfigurationView(Context context, int maxSize, String displayMode, boolean mode) {
super(context);
this.maxSize = maxSize;
this.displayMode = displayMode;
this.mode = mode;
init();
}
/**
*
* @param context
* @param maxSize 需要显示的数值
* @param displayMode 显示的类型
* @param mode 显示的模式,默认为false,数值越高,颜色越偏向红色。为true反之
* @param animMode 是否显示动画加载效果,默认为true
*/
public ConfigurationView(Context context, int maxSize, String displayMode, boolean mode, boolean animMode) {
super(context);
this.maxSize = maxSize;
this.displayMode = displayMode;
this.mode = mode;
this.animMode = animMode;
init();
}
// 绘制界面
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
canvas.drawRect(10, endHeight, 10+viewWidth, startHeight, paint);
if(!display){
if(!mode && indexSize >= 50){
paint.setARGB(255, 200, 200, 60);
if(!mode && indexSize >= 80){
paint.setARGB(255, (indexSize<100)?(110+indexSize+45):255, (indexSize<100)?210-(indexSize+45):0, 20);
}
}else if(mode && indexSize <= 50){
paint.setARGB(255, 200, 200, 60);
if(mode && indexSize <= 30){
paint.setARGB(255, 255-indexSize, indexSize, 20);
}
}
canvas.drawRect(10, endHeight, 10+viewWidth, startHeight, paint);
paint.setARGB(255, 99, 66, 0);
canvas.drawText(""+indexSize, numWidth, endHeight-5, paint);
paint.setARGB(255, 110, 210, 60);
}
canvas.drawText(displayMode, 0, startHeight+15, font_Paint);
}
// 初始化
private void init(){
// 数值初始化
paint = new Paint();
paint.setARGB(255, 110, 210, 20);
font_Paint = new Paint();
font_Paint.setARGB(255, 66, 66, 66);
// 设置数值显示的偏移量,数值越小,偏移量越大
numWidth = 9;
if(maxSize < 10){
numWidth = 15;
}else if(maxSize < 100){
numWidth = 12;
}
if(animMode){
// 启动一个线程来实现柱状图缓慢增高
thread.start();
}else{
display = false;
indexSize = maxSize;
endHeight = startHeight-(float) (maxSize*1.5);
invalidate();
}
}
private Handler handler = new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
if(msg.what == 1 && indexSize < maxSize && endHeight >= 20){
endHeight -= 1.5;
indexSize += 1;
}else{
display = false;
}
invalidate();
}
};
private Thread thread = new Thread(){
@Override
public void run(){
while(!Thread.currentThread().isInterrupted() && display )
{
Message msg = new Message();
msg.what = 1;
handler.sendMessage(msg);
try {
Thread.sleep(15);
} catch (InterruptedException e) {
System.err.println("InterruptedException!线程关闭");
this.interrupt();
}
}
}
};
// 刷新View
public void toInvalidate(){
this.invalidate();
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
Android应用源码之Configuration.zip项目安卓应用源码下载
共25个文件
class:10个
java:3个
xml:3个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 191 浏览量
2022-03-08
00:04:15
上传
评论
收藏 47KB ZIP 举报
温馨提示
Android应用源码之Configuration.zip项目安卓应用源码下载Android应用源码之Configuration.zip项目安卓应用源码下载 1.适合学生毕业设计研究参考 2.适合个人学习研究参考 3.适合公司开发项目技术参考
资源推荐
资源详情
资源评论
收起资源包目录
Android应用源码之Configuration.zip (25个子文件)
Android应用源码之Configuration
Android应用源码之Configuration
Configuration
AndroidManifest.xml 658B
res
layout
config_dialog.xml 982B
drawable
icon.png 3KB
dialog_alert_bg2.9.png 2KB
values
strings.xml 173B
proguard.cfg 1KB
src
org
gmy
view
config
ConfigurationView.java 5KB
Configuration.java 1KB
bin
Configuration.apk 12KB
org
gmy
view
config
ConfigurationView$2.class 1KB
R.class 538B
ConfigurationView.class 4KB
R$layout.class 406B
R$attr.class 343B
Configuration.class 2KB
R$id.class 428B
R$string.class 430B
ConfigurationView$1.class 1KB
R$drawable.class 443B
classes.dex 7KB
resources.ap_ 7KB
.classpath 280B
default.properties 362B
.project 849B
gen
org
gmy
view
config
R.java 870B
共 25 条
- 1
资源评论
yxkfw
- 粉丝: 81
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- HtmlMate标签使用详解中文最新版本
- ATM机旁危险物品检测数据集VOC+YOLO格式1251张5类别.zip
- 网页优化meta标签使用方法及规则中文最新版本
- 网页万能复制 浏览器插件
- IMG_20241123_093226.jpg
- JavaScript的表白代码项目源码.zip
- springboot vue3前后端分离开发入门介绍,分享给有需要的人,仅供参考
- 全国297个地级市城市辖区数据1990-2022年末实有公共汽车出租车数人均城市道路建成区绿地面积供水供气总量医院卫生机构数医生人数GDP第一二三产业增加值分行业从业人员水资源农产品产量利用外资
- Python客流量时间序列预测模型.zip
- 故障预测-灰色预测模型C++源码.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功