zoukankan      html  css  js  c++  java
  • android 入门-android自定义控件

    第一种:继承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=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;
            }
    
        }
    
        @Override
        protected 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);
        }
    }
  • 相关阅读:
    4天精通arcgis
    性能优化紧急回顾笔记
    linux下oracle导入dmp文件
    centos虚拟机复制后网络重启出错解决
    redhat ent 6.5 virtualbox虚拟机通过桥接方式配置主机-虚拟机的局域网
    SVN的搭建及使用(三)用TortoiseSVN修改文件,添加文件,删除文件,以及如何解决冲突,重新设置用户名和密码等
    SVN 的搭建及使用(二)VisualSVN Server建立版本库,以及VisualSVN和TortoiseSVN的使用
    SVN 的搭建及使用(一)下载和搭建SVN服务器
    Visual Studio 2008常见问题
    .net 学习路线感想(转)
  • 原文地址:https://www.cnblogs.com/androllen/p/4892737.html
Copyright © 2011-2022 走看看