第一种:继承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. 1.2---翻转字符串(CC150)

    import java.util.*; public class Reverse { public String reverseString(String iniString) { // write ...

  2. wordpress迁移到本地404错误

    线上wordpress迁移到本地可能出现找不到页面问题,可能是因为配置了url静态化,同时wordpress的文章链接是存在数据库中的 下面替换掉原来线上的文章链接,其中数据库名为wordpress ...

  3. silverlight 获取服务器上图片出现异常 “AG_E_NETWORK_ERROR”

    前言 之前项目一直是发布在IIS上面使用HTTP访问,现在要求改为HTTPS,通过在IIS生成自签名后,打开HTTPS通道,可以将原来的程序已HTTPS的方式发布出来. 可参见 http://blog ...

  4. poj 2488

    http://poj.org/problem?id=2488 题意:就是让马把棋盘都走完,每一个点都要走到,出口就是a,b. #include <stdio.h> #include < ...

  5. 算法手记 之 数据结构(堆)(POJ 2051)

    一篇读书笔记 书籍简评:<ACM/ICPC 算法训练教程>这本书是余立功主编的,代码来自南京理工大学ACM集训队代码库,所以小编看过之后发现确实很实用,适合集训的时候刷题啊~~,当时是听了 ...

  6. 在Linux下记录所有用户的登录和操作日志

    一般我们可以用history命令来查看用户的操作记录,但是这个命令不能记录是哪个用户登录操作的,也不能记录详细的操作时间,且不完整:所以误操作而造成重要的数据丢失,就很难查到是谁操作的. 在这里我们通 ...

  7. 问题 A: 【动态规划】采药_二维数组_一维数组

    问题 A: [动态规划]采药 时间限制: 1 Sec  内存限制: 64 MB提交: 35  解决: 15[提交][状态][讨论版] 题目描述 山洞里有一些不同的草药,采每一株都需要一些时间,每一株也 ...

  8. Match:Power Strings(POJ 2406)

     字符串前缀的阶 题目大意:求前缀的阶 和POJ1961是一样的,KMP的Next数组的应用,不要用STL,不要一个一个读入字符(IO永远是最慢的) #include <iostream> ...

  9. BestCoder21 1002.Formula 解题报告

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5139 题目意思:给出一个数 n,求出 f(n). 可以发现有以下规律: f(1) = 1! f(2) ...

  10. 【mongo】drop不释放磁盘空间

    用drop删除mongo的collection后,其size归零,但是storage仍然是原大小,磁盘空间没有被释放. 要用下面命令释放无用的磁盘空间 mongod -repair