第一种:继承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. 【GoLang】GoLang 错误处理 -- 使用 error is value 的思路处理,检查并处理error

    吐血推荐: https://dave.cheney.net/2016/04/27/dont-just-check-errors-handle-them-gracefully 参考资料: https:/ ...

  2. Struts2获取Session方法

    Struts2里面有三种方法可以获取request,最好使用ServletRequestAware接口通过IOC机制注入Request对象. 方法1:IOC方式action类实现SessionAwar ...

  3. Java中对List集合内的元素进行顺序、倒序、随机排序的示例代码

    import java.util.Collections; import java.util.LinkedList; import java.util.List; public class Test ...

  4. C# 中的virtural和abstract

    一. Virtual 方法(虚方法) virtual 关键字用于在基类中修饰方法.virtual 的使用有两种情况: 1.在基类中定义了virtual方法,但是派生类中没有重写该虚方法,那么在对派生类 ...

  5. ios 在storyboard 和 xib中,显示自定义view的预览效果

    发现FSCalendar这个控件能在xib中显示预览效果,是怎么实现的呢?其中涉及的知识又有哪些? 主要就是IBInspectable 和 IB_DESIGNABLE 先看 IBInspectable ...

  6. Java for LintCode 颠倒整数

    将一个整数中的数字进行颠倒,当颠倒后的整数溢出时,返回 0 (标记为 32 位整数). 解题思路: JAVA实现如下: public int reverseInteger(int n) { Boole ...

  7. 7.SpringMVC注解优化

    新建controller,每个人都可以建自己的controller,比较方便,不用再在web.xml中进行配置,value的请求地址一定要唯一. 优化: 1.上面示例中spring-annotatio ...

  8. sql语句全集

    --删除外键alter table AdItem drop constraint AdOrder_AdItem_FK1(外键名称) --增加外键alter table AdItem add const ...

  9. 关于C语言中的转义字符

    1.转义字符的分类 1. 1一般转义字符 这种转义字符,虽然在形式上由两个字符组成,但只代表一个字符.常用的一般转义字符为: \a     \n     \t     \v     \b     \r ...

  10. MPAndroidChart 教程

    以前没用过MPAndroidChart,为了方便学习查找,引用下别个大神的笔记. 其余文章索引: MPAndroidChart 教程:概述MPAndroidChart 教程:开始 Getting St ...