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);
        }
    }
  • 相关阅读:
    Java并发编程原理与实战二十九:Exchanger
    Java并发编程原理与实战二十八:信号量Semaphore
    Java并发编程原理与实战二十七:循环栅栏:CyclicBarrier
    Java并发编程原理与实战二十六:闭锁 CountDownLatch
    Java并发编程原理与实战二十五:ThreadLocal线程局部变量的使用和原理
    Java并发编程原理与实战二十四:简易数据库连接池
    Java并发编程原理与实战二十三:Condition原理分析
    Java并发编程原理与实战二十二:Condition的使用
    Java并发编程原理与实战二十一:线程通信wait&notify&join
    Java并发编程原理与实战二十:线程安全性问题简单总结
  • 原文地址:https://www.cnblogs.com/androllen/p/4892737.html
Copyright © 2011-2022 走看看