博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
UI设计篇·入门篇·绘制简单自定义矩形图/设置按钮按下弹起颜色变化/设置图形旋转...
阅读量:4684 次
发布时间:2019-06-09

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

Android的基本控件和图形有限,难以满足所有的实际需要和设计需求,好在Android给出了相对完善的图形绘制和自定义控件的API,利用这些API,可以基本满足设计的需求。

 

自定义图像和控件的方法:

1.自定义一个class,继承View,给出含有context和context,attr两种参数的构造方法,在构造方法中设置相关的需求

2.在Layout设计窗口,通过包名+自定义class类名来调用此视图,并可以跟系统控件设置完全相同

一个简单自定义视图的的类代码:

//自定义一个简单的矩形视图 public class MyRect extends View {    public MyRect(Context context) {        super(context);    }    public MyRect(Context context, AttributeSet attrs) {        super(context, attrs);        setBackgroundColor(Color.BLACK);      //设置该矩形的背景为黑色    }}

调用的Layout XMl文档代码:

二、为按钮设置点击的颜色变化

在Drawable文件夹下新建一个XML文档,用来声明按钮点击变化选项:

    //没按下的颜色
    //按下后的颜色

具体的使用代码:

三、设计一个不断旋转的矩形图像步骤:

1.自定义class并继承View,重写相关方法

2.包名+类名引用

public class RotatingRect extends View {    public RotatingRect(Context context, AttributeSet attrs, int defStyleAttr) {        super(context, attrs, defStyleAttr);        initproperties();        //这是包含了画笔初始方法,每个构造方法都调用,保证一定能够初始化    }    public RotatingRect(Context context, AttributeSet attrs) {        super(context, attrs);        initproperties();    }    public RotatingRect(Context context) {        super(context);        initproperties();    }    private void initproperties(){        paint = new Paint();        paint.setColor(Color.RED);    }    @Override    public void draw(Canvas canvas) {            //重写draw方法,自行设置绘制代码        super.draw(canvas);        canvas.save();                     //保存绘制信息        canvas.rotate(degrees,100,100);           //旋转一定的角度        canvas.drawRect(0,0,100,100,paint);         //绘制一个矩形,并传入画笔工具        degrees++;                        //每一次绘制后,旋转的角度+1        canvas.restore();                            invalidate();           //注:一直重绘,很耗资源,但延时难以获得连续的变化效果    }    private Paint paint;      private float degrees;      //这是每次变化的角度}

 

转载于:https://www.cnblogs.com/thinfog/p/5710753.html

你可能感兴趣的文章
微信营销小游戏开发之6月份总结
查看>>
[开发技巧]·TopN指标计算方法
查看>>
【模板】BZOJ 3685: 普通van Emde Boas树——Treap
查看>>
Python yield 使用浅析
查看>>
如果adb devices出现5037端口未被占用依旧显示获取失败,出现以下报错时的解决办法...
查看>>
pyapp的封装和内置函数
查看>>
Alpha 冲刺 (5/10)
查看>>
使用Siege进行WEB压力测试
查看>>
斑马为什么有条纹?
查看>>
android多层树形结构列表学习笔记
查看>>
koa2实现对mysql的增删改查函数封装
查看>>
自我介绍
查看>>
Android_去掉EditText控件周围橙色高亮区域
查看>>
fedora 29 桌面版 设置 cockpit 自动开机启动
查看>>
分类算法之朴素贝叶斯——简单天气预报算法
查看>>
产品 线上 保持 和 支持 服务 (Support and maintenance solutions)
查看>>
如何优雅的研究 RGSS3 (七) 加入LOGO屏幕
查看>>
POJ3187 Backward Digit Sums
查看>>
高频总线上的串阻问题
查看>>
Cookie/Session机制具体解释
查看>>