博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android自定义控件CustomView1
阅读量:6101 次
发布时间:2019-06-20

本文共 1905 字,大约阅读时间需要 6 分钟。

  hot3.png

public class MyView extends View {

    public MyView(Context context) {

        super(context);

        init();

    }

    public MyView(Context context, AttributeSet attrs) {

        super(context,attrs);

        init();

    }

    protected void onDraw(Canvas canvas) {        //    画布

        super.onDraw();

        Paint paint = new Paint();        //    画笔

        paint.setColor(Color.BLUE);        //    画笔颜色    Color.TRANSPARENT:透明色

        paint.setTextSize(20);            //    字体大小

        paint.setStrokeWidth(30);

        paint.setAntiAlias(true);

        paint.setStyle(Paint.Style.STROKE);        //空心    FILL:填充

 

        int width = getWidth();

        int height = getHeight();

        canvas.drawLine(0, 0, width, height, paint);

        canvas.drawCircle(width/2, height/2, 50, paint);

        canvas.drawRect(0, 0, 200, 100, paint);

        Rect rect = new Rect(0, 0, 200, 100);

        canvas.drawRect(rect, paint);

        RectF rectF = new RectF(100, 100, 200, 100);

        canvas.drawArc(rectF, 0, 270, true, paint);

        canvas.drawRoundRect(0, 0, 200, 100, 20, 30, paint);

        Bitmap bitmap = BitmapFactory.decodeResource(getResource(), R.mimap.xxx);

        canvas.drawBitmap(bitmap, width/2, 0, paint);

        canvas.drawText("文本", 0, 20, paint);

    }

    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {

        super.onMeasure(widthMeasureSpec, heightMeasureSpec);

        int widthMode = MeasureSpec.getMode(widthMeasureSpec);

        int heightMode = MeasureSpec.getMode(heightMeasureSpec);

        if(widthMode == MeasureSpec.EXACTLY        //    match_parent或固定值

           && heightMode == MeasureSpec.AT_MOST) {        //    wrap_content    }

        int width = MeasureSpec.getSize(widthMeasureSpec);

        if(widthMode == MeasureSpec.AT_MOST) {    width = 100;    }

        if(heightMode == MeasureSpec.AT_MOST) {    height = 100;    }

        setMeasureDimension(width, height);

    }

    public boolean onTouchEvent(MotionEvent event) {

        int action = event.getAction();

        if(action == MotionEvent.ACTION_DOWN) {

 

        } else if(action == MotionEvent.ACTION_MOVE) {

 

        } else if(action == MotionEvent.ACTION_UP) {

  

        }

    }

}

invalidate();        //更新控件的绘制

postinvalidate();        //子线程调用

只有继承自View,onDraw()才会被调用

转载于:https://my.oschina.net/glfei/blog/3027877

你可能感兴趣的文章
PHP读取日志里数据方法理解
查看>>
第五十七篇、AVAssetReader和AVAssetWrite 对视频进行编码
查看>>
Vivado增量式编译
查看>>
一个很好的幻灯片效果的jquery插件--kinMaxShow
查看>>
微信支付签名配置正确,但返回-1,调不出支付界面(有的手机能调起,有的不能)...
查看>>
第二周例行报告
查看>>
Spring学习(16)--- 基于Java类的配置Bean 之 基于泛型的自动装配(spring4新增)...
查看>>
实验八 sqlite数据库操作
查看>>
四种简单的排序算法(转)
查看>>
Quartz2D之着色器使用初步
查看>>
多线程条件
查看>>
Git [remote rejected] xxxx->xxxx <no such ref>修复了推送分支的错误
查看>>
Porter/Duff,图片加遮罩setColorFilter
查看>>
黄聪:VMware安装Ubuntu10.10【图解】转
查看>>
Centos 6.x 升级openssh版本
查看>>
公式推♂倒题
查看>>
vue实现点击展开,点击收起
查看>>
如何使frame能居中显示
查看>>
第k小数
查看>>
构建之法阅读笔记三
查看>>