android 入门-android自定义控件
第一种:继承View
实现自己的属性
<com.cc.imagewithmarkersample.MyViewandroid:id="@+id/myviewid"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_centerHorizontal="true"SrcLT="@drawable/red"SrcRT="@drawable/green"SrcRB="@drawable/green"/>
public class MyView extends View {// private String mtext;private int msrclt, msrcrt, msrcrb;private static final String SrcLT = "SrcLT";private static final String SrcRT = "SrcRT";private static final String SrcRB = "SrcRB";private static final int Canvas_W=150,Canvas_H=150;private static final int Rect_W=100,Rect_H=100;private Bitmap bitmap;private int bitmap_W,bitmap_H;private int LT_X=0,LT_Y=0;private int RT_X=100,RT_Y=0;private int RB_X=100,RB_Y=100;private int Bitmap_X=25,Bitmap_Y=25;private Rect mRect=null;public MyView(Context context) {super(context);}public MyView(Context context, AttributeSet attrs) {super(context, attrs); // int textId = attrs.getAttributeResourceValue(null, "Text",0);int srcLeftTopId = attrs.getAttributeResourceValue(null, SrcLT, 0);int srcRightTopId = attrs.getAttributeResourceValue(null, SrcRT, 0);int srcRightBottomId = attrs.getAttributeResourceValue(null, SrcRB, 0); // mtext = context.getResources().getText(textId).toString();msrclt = srcLeftTopId;msrcrt = srcRightTopId;msrcrb = srcRightBottomId;mRect=new Rect(Bitmap_X,Bitmap_Y,Rect_W+Bitmap_X,Rect_H+Bitmap_Y);}public void setImageBitmap(Bitmap bm) {/** 获取图片宽高 **/bitmap_W = bm.getWidth();bitmap_H = bm.getHeight();Bitmap_X=(Canvas_W-bitmap_W)/2;Bitmap_Y=(Canvas_H-bitmap_H)/2;if (bitmap != bm) {bitmap=bm;}}@Overrideprotected void onDraw(Canvas canvas) {Paint paint = new Paint();paint.setColor(Color.GRAY);canvas.drawBitmap(bitmap, Bitmap_X, Bitmap_Y, paint);paint.setAlpha(100);canvas.drawRect(mRect,paint);paint.setAlpha(255);onDrawLt(canvas, paint);onDrawRt(canvas, paint);onDrawRb(canvas, paint);// canvas.drawText(mtext, bw / 2, 30, paint); }private void onDrawLt(Canvas canvas, Paint paint) {InputStream is = getResources().openRawResource(msrclt);Bitmap mBitmap = BitmapFactory.decodeStream(is);int bh = mBitmap.getHeight();int bw = mBitmap.getWidth();canvas.drawBitmap(mBitmap, LT_X, LT_Y, paint);}private void onDrawRt(Canvas canvas, Paint paint) {InputStream is = getResources().openRawResource(msrcrt);Bitmap mBitmap = BitmapFactory.decodeStream(is);int bh = mBitmap.getHeight();int bw = mBitmap.getWidth();canvas.drawBitmap(mBitmap, RT_X, RT_Y, paint);}private void onDrawRb(Canvas canvas, Paint paint) {InputStream is = getResources().openRawResource(msrcrb);Bitmap mBitmap = BitmapFactory.decodeStream(is);int bh = mBitmap.getHeight();int bw = mBitmap.getWidth();canvas.drawBitmap(mBitmap, RB_X, RB_Y, paint);} }
转载于:https://www.cnblogs.com/luquanmingren/p/4892737.html
android 入门-android自定义控件相关推荐
- (4)Android入门——android四大组件基础介绍及打电话,发短信简单应用 单元测试
1,本章是android入门最后一篇,从后面开始将进入进阶阶段.我也会加快更新速度.但愿能保持每天三篇博文的数量.但是是在保证质量的前提下.后面我还会发布一些实际开发中用到的应用案例.敬请关注! 应用 ...
- android 入门-Android Permission denied(不允许连接Socket) 错误
Android Permission denied(不允许连接Socket) 错误 转载于:https://www.cnblogs.com/luquanmingren/p/4260633.html
- android 入门-android Studio 配置
重要:sdk 最好先有一个版本 19版本.build-tools 19.1.0 extras 19.0和platforms android-19 1.下载android sdk 和jdk 并配置环境变 ...
- Qt基础与Qt on Android入门-安晓辉-专题视频课程
Qt基础与Qt on Android入门-66107人已学习 课程介绍 本课程起始于基础的开发环境搭建和Qt Creator介绍,帮助初学者入门:着力于Qt的内在机制,由浅入深介绍信号 ...
- android 入门 006(sqlite增删改查)
android 入门 006(sqlite增删改查) package cn.rfvip.feb_14_2_sqlite;import android.content.Context; import a ...
- 【详细】Android入门到放弃篇-YES OR NO-》各种UI组件,布局管理器,单元Activity
问:达叔,你放弃了吗? 答:不,放弃是不可能的,丢了Android,你会心疼吗?如果别人把你丢掉,你是痛苦呢?还是痛苦呢?~ 引导语 有人说,爱上一个人是痛苦的,有人说,喜欢一个人是幸福的. 人与人之 ...
- Android入门(十二)SQLite事务、升级数据库
原文链接:http://www.orlion.ga/610/ 一.事务 SQLite支持事务,看一下Android如何使用事务:比如 Book表中的数据都已经很老了,现在准备全部废弃掉替换成新数据,可 ...
- android入门程序源代码,安卓程序开发入门
您可能感兴趣的话题: 安卓程序开发入门 核心提示:本教程为大家介绍采用Eclipse软件来编写安卓Hello,World程序. 创建一个新项目是很简单的,只要你安装了Eclipse插件,并且你的Ecl ...
- unity发布android报错,Unity移动端入门 - Android那些事 /AAR包发布错误
老师,您好! Unity移动端入门 - Android那些事的第31节 发布JAR包我两次都成功了,但任务32:0506-互相调用模式之导出Aar包 总是失败,卡在这里都半个月了.请老师指点迷津 打包 ...
最新文章
- 如何用photoshop做24色环_如何用Photoshop给照片添加印章水印,内附印章模板素材...
- 深入理解C# 静态类与非静态类、静态成员的区别
- 根据实例说数据库设计(一)—— 人员管理
- 【NOIP2014模拟8.25】设备塔
- bartender 10.1破解版|bartender条码打印10.1
- JEB2.2.7/3.0.0兼容运行
- 利用数据质量规则库推动数据质量管理
- 苹果微信分身版ios_苹果ios微信分身多开双开助手免费版
- 什么是 DataSource?什么又是 DruidDataSource?
- 近期工作中的错误总结
- python字典{}
- Tortoise commit提交模板配置
- linux的系统监视器图片_用Jetson Nano构建一个价值60美元的人脸识别系统
- redis集群报错:(error) MOVED 11469 192.168.163.249:7002
- Visual Studio/AnkhSVN在VS中出现SVN代码冲突的解决方法
- 7.深入浅出:互补输出级——参考《模拟电子技术基础》清华大学华成英主讲
- kwgt 歌词_kwgt桌面插件美化下载-Eight for kwgt专业版主题包v3.9.136.1 最新版-腾飞网...
- 真正的不需注册不需购买不需花钱的数据恢复软件
- 怎么写伪原创文章,可以自动生成么?
- iOS crash 问题分析汇总
热门文章
- 机器学习算法 拟合曲线_制定学习曲线以检测机器学习算法中的错误
- 模型监控psi_PSI和CSI:前2个模型监控指标
- 泰坦尼克数据集预测分析_探索性数据分析—以泰坦尼克号数据集为例(第1部分)
- 深入浅出SQL(1)
- 如果央行加息,以前办的房贷利息也会涨吗?
- 哪些房产不能抵押做贷款?
- java servlet深入理解_java 步步惊心 (web ) 深入理解servlet
- applicationproperties不是小叶子_三角梅整株叶子发黄从这里找原因,早解决早生长!...
- Liner(分段线性插值)
- 在线课程学习、科研科技视频网站