第一种:继承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自定义控件相关推荐

  1. (4)Android入门——android四大组件基础介绍及打电话,发短信简单应用 单元测试

    1,本章是android入门最后一篇,从后面开始将进入进阶阶段.我也会加快更新速度.但愿能保持每天三篇博文的数量.但是是在保证质量的前提下.后面我还会发布一些实际开发中用到的应用案例.敬请关注! 应用 ...

  2. android 入门-Android Permission denied(不允许连接Socket) 错误

    Android Permission denied(不允许连接Socket) 错误 转载于:https://www.cnblogs.com/luquanmingren/p/4260633.html

  3. android 入门-android Studio 配置

    重要:sdk 最好先有一个版本 19版本.build-tools 19.1.0 extras 19.0和platforms android-19 1.下载android sdk 和jdk 并配置环境变 ...

  4. Qt基础与Qt on Android入门-安晓辉-专题视频课程

    Qt基础与Qt on Android入门-66107人已学习 课程介绍         本课程起始于基础的开发环境搭建和Qt Creator介绍,帮助初学者入门:着力于Qt的内在机制,由浅入深介绍信号 ...

  5. android 入门 006(sqlite增删改查)

    android 入门 006(sqlite增删改查) package cn.rfvip.feb_14_2_sqlite;import android.content.Context; import a ...

  6. 【详细】Android入门到放弃篇-YES OR NO-》各种UI组件,布局管理器,单元Activity

    问:达叔,你放弃了吗? 答:不,放弃是不可能的,丢了Android,你会心疼吗?如果别人把你丢掉,你是痛苦呢?还是痛苦呢?~ 引导语 有人说,爱上一个人是痛苦的,有人说,喜欢一个人是幸福的. 人与人之 ...

  7. Android入门(十二)SQLite事务、升级数据库

    原文链接:http://www.orlion.ga/610/ 一.事务 SQLite支持事务,看一下Android如何使用事务:比如 Book表中的数据都已经很老了,现在准备全部废弃掉替换成新数据,可 ...

  8. android入门程序源代码,安卓程序开发入门

    您可能感兴趣的话题: 安卓程序开发入门 核心提示:本教程为大家介绍采用Eclipse软件来编写安卓Hello,World程序. 创建一个新项目是很简单的,只要你安装了Eclipse插件,并且你的Ecl ...

  9. unity发布android报错,Unity移动端入门 - Android那些事 /AAR包发布错误

    老师,您好! Unity移动端入门 - Android那些事的第31节 发布JAR包我两次都成功了,但任务32:0506-互相调用模式之导出Aar包 总是失败,卡在这里都半个月了.请老师指点迷津 打包 ...

最新文章

  1. 如何用photoshop做24色环_如何用Photoshop给照片添加印章水印,内附印章模板素材...
  2. 深入理解C# 静态类与非静态类、静态成员的区别
  3. 根据实例说数据库设计(一)—— 人员管理
  4. 【NOIP2014模拟8.25】设备塔
  5. bartender 10.1破解版|bartender条码打印10.1
  6. JEB2.2.7/3.0.0兼容运行
  7. 利用数据质量规则库推动数据质量管理
  8. 苹果微信分身版ios_苹果ios微信分身多开双开助手免费版
  9. 什么是 DataSource?什么又是 DruidDataSource?
  10. 近期工作中的错误总结
  11. python字典{}
  12. Tortoise commit提交模板配置
  13. linux的系统监视器图片_用Jetson Nano构建一个价值60美元的人脸识别系统
  14. redis集群报错:(error) MOVED 11469 192.168.163.249:7002
  15. Visual Studio/AnkhSVN在VS中出现SVN代码冲突的解决方法
  16. 7.深入浅出:互补输出级——参考《模拟电子技术基础》清华大学华成英主讲
  17. kwgt 歌词_kwgt桌面插件美化下载-Eight for kwgt专业版主题包v3.9.136.1 最新版-腾飞网...
  18. 真正的不需注册不需购买不需花钱的数据恢复软件
  19. 怎么写伪原创文章,可以自动生成么?
  20. iOS crash 问题分析汇总

热门文章

  1. 机器学习算法 拟合曲线_制定学习曲线以检测机器学习算法中的错误
  2. 模型监控psi_PSI和CSI:前2个模型监控指标
  3. 泰坦尼克数据集预测分析_探索性数据分析—以泰坦尼克号数据集为例(第1部分)
  4. 深入浅出SQL(1)
  5. 如果央行加息,以前办的房贷利息也会涨吗?
  6. 哪些房产不能抵押做贷款?
  7. java servlet深入理解_java 步步惊心 (web ) 深入理解servlet
  8. applicationproperties不是小叶子_三角梅整株叶子发黄从这里找原因,早解决早生长!...
  9. Liner(分段线性插值)
  10. 在线课程学习、科研科技视频网站