第一种:继承View

实现自己的属性

  <com.cc.imagewithmarkersample.MyView
android: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=,Canvas_H=;
private static final int Rect_W=,Rect_H=;
private Bitmap bitmap;
private int bitmap_W,bitmap_H;
private int LT_X=,LT_Y=;
private int RT_X=,RT_Y=;
private int RB_X=,RB_Y=;
private int Bitmap_X=,Bitmap_Y=;
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, );
int srcRightTopId = attrs.getAttributeResourceValue(null, SrcRT, );
int srcRightBottomId = attrs.getAttributeResourceValue(null, SrcRB, );
// 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)/;
Bitmap_Y=(Canvas_H-bitmap_H)/; if (bitmap != bm) {
bitmap=bm;
} } @Override
protected void onDraw(Canvas canvas) {
Paint paint = new Paint();
paint.setColor(Color.GRAY); canvas.drawBitmap(bitmap, Bitmap_X, Bitmap_Y, paint); paint.setAlpha();
canvas.drawRect(mRect,paint); paint.setAlpha();
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);
}
}

android 入门-android自定义控件的更多相关文章

  1. android 入门-android Studio git 克隆

    最后是完成 以上是如何从android studio Git 克隆Github的项目

  2. android 入门-android Studio 解决方案

    一.当提示 解决方案: 1. 2. 二.从这步到这步 的时候,可能遇见下面的问题. 解决方案: 更新一下build-tools 19.1.0版本 放到你的sdk里并重启as. 三. 当遇见这样的情况 ...

  3. android 入门-android Studio 配置

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

  4. android 入门-android属性介绍

      android:visibility="gone" 不保留view控件所占有的空间 隐藏 android:visibility="invisible" 保留 ...

  5. android 入门-android Studio 快捷输入

    1.输入 log的时候按一下Tab.就会打出 private static final String TAG="Settings"; 2. shift +alt+x 运行 shif ...

  6. android 入门-android Studio git配置

    以后在整理

  7. UniMelb Comp30022 IT Project (Capstone) - 1.Android入门

    1. Android入门 Android系统架构 Android系统:四层架构.五块区域 1. Linux内核层 Linux Kernel:为Android设备的硬件提供了底层驱动 2. 系统运行库层 ...

  8. Android中的自定义控件(二)

    案例四: 自定义开关       功能介绍:本案例实现的功能是创建一个自定义的开关,可以自行决定开关的背景.当滑动开关时,开关的滑块可跟随手指移动.当手指松开后,滑块根据开关的状态,滑到最右边或者滑到 ...

  9. Android中的自定义控件(一)

    自定义控件是根据自己的需要自己来编写控件.安卓自带的控件有时候无法满足你的需求,这种时候,我们只能去自己去实现适合项目的控件.同时,安卓也允许你去继承已经存在的控件或者实现你自己的控件以便优化界面和创 ...

随机推荐

  1. 3分钟,9个Q&A让你快速知道Docker到底是什么

    不论是Google.Amazon.Microsoft.VMware都纷纷拥戴,加入Docker和Container所掀起的新时代云端虚拟化行列,这两项技术成为了IT界的新趋势.Docker和Conta ...

  2. PHP-redis中文文档

    phpredis是php的一个扩展,效率是相当高有链表排序功能,对创建内存级的模块业务关系 很有用;以下是redis官方提供的命令使用技巧: 下载地址如下: https://github.com/wi ...

  3. oracle数据库高级应用之《自动生成指定表的insert,update,delete语句》

    /* * 多条记录连接成一条 * tableName 表名 * type 类型:可以是insert/update/select之一 */ create or replace function my_c ...

  4. 小波变换C++实现(一)----单层小波变换

    文章转自: http://www.cnblogs.com/IDoIUnderstand/archive/2013/03/30/3280724.html [小波变换]STL版 一维离散小波变换(DWT) ...

  5. tomcat有哪些性能调优方法

    前几天看见一篇介绍性能调优文章,觉得不错.特此收藏(http://blog.csdn.net/lifetragedy/article/details/7708724)

  6. iOS 小经验:UIAnimation空对象导致crash

    今天调试一个老程序,发现有时运行动画会crash,仔细检查了基本的内存管理,发现都没问题!后来发现了问题,这个程序用的是下面的代码 [self performSelectorInBackground: ...

  7. perl Can't use string Cxxx) as a symbol ref while "strict refs" in use at XXXX.pl错误

    今天写脚本遇到Can't use string ("bond2     Link encap:InfiniBand ") as a symbol ref while "s ...

  8. We7 CMS研究

    我下载的we7 3.0是基于vs 2010的,官方网站也建议使用vs2010,但是我有追新的习惯,并相信vs 2013一定能够兼容vs2010的项目,于是在vs2013下打开解决方案并且全部升级,把目 ...

  9. 【leetcode】Insertion Sort List (middle)

    Sort a linked list using insertion sort. 思路: 用插入排序对链表排序.插入排序是指每次在一个排好序的链表中插入一个新的值. 注意:把排好序的部分和未排序的部分 ...

  10. 20145213《Java程序设计》第二周学习总结

    20145213<Java程序设计>第二周学习总结 教材学习内容总结 本周娄老师给的任务是学习教材的第三章--基础语法.其实我觉得还蛮轻松的,因为在翻开厚重的书本,一股熟悉的气息扑面而来, ...