UI设计篇·入门篇·绘制简单自定义矩形图/设置按钮按下弹起颜色变化/设置图形旋转
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文档代码:
<andrew.com.custompaintdemo.MyRect
android:layout_width="100dp"
android:layout_height="100dp" />
二、为按钮设置点击的颜色变化
在Drawable文件夹下新建一个XML文档,用来声明按钮点击变化选项:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="false" android:drawable="@color/colorAccent"></item> //没按下的颜色
<item android:state_pressed="true" android:drawable="@color/colorPrimary"></item> //按下后的颜色
</selector>
具体的使用代码:
<Button
android:text="Button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/buttonskin" //此处即为设置按钮颜色变化的代码引用语句
/>
三、设计一个不断旋转的矩形图像步骤:
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; //这是每次变化的角度
}
UI设计篇·入门篇·绘制简单自定义矩形图/设置按钮按下弹起颜色变化/设置图形旋转的更多相关文章
- 从零开始学Axure原型设计(入门篇)
如果说Sketch是最美.最简洁的设计软件,那么Axure就是最强大的原型制作软件.Axure不仅能制作静态的视觉稿.页面,还能添加交互动作,是进行原型设计的最佳软件之一.虽然Axure的学习曲线比较 ...
- Java入门:绘制简单图形
在上一节,我们学习了如何使用swing和awt工具创建一个空的窗口,本节学习如何绘制简单图形. 基本绘图介绍 Java中绘制基本图形,可以使用Java类库中的Graphics类,此类位于java.aw ...
- elasticsearch 第一篇(入门篇)
介绍 elasticsearch是一个高效的.可扩展的全文搜索引擎 基本概念 Near Realtime(NRT): es是一个接近实时查询平台,意味从存储一条数据到可以索引到数据时差很小,通常在1s ...
- OpenGL入门程序一:绘制简单的矩形
#include <GL/glut.h> void MyDisplay(void); int main(int argc, char **argv) { //设置窗口的大小 glutIni ...
- UI设计篇·入门篇·简单动画的实现,透明动画/旋转动画/移动动画/缩放动画,混合动画效果的实现,为动画设置监听事件,自定义动画的方法
基本的动画构成共有四种:透明动画/旋转动画/移动动画/缩放动画. 配置动画的方式有两种,一种是直接使用代码来配置动画效果,另一种是使用xml文档配置动画效果 相比而言,用xml文档写出来的动画效果,写 ...
- UI设计篇·入门篇·简单动画的实现,为布局设置动画,用XML布置布局动画
不仅仅控件可以设置动画,一个布局也可以设置动画, 当给一个布局设置了动画的时候,这个布局里所包含的控件都会依赖执行这些动画. 为布局设置动画的实现步骤: 1.新建一个动画,设置需要实现的形式 2.新建 ...
- 小程序UI设计之-介绍篇
工具截图 此工具通过可视化操作进行布局,依据iphone6尺寸设置画布,可以自动生成rpx和百分比的wxss.后续还会增加js代码自动生成.工具中组件按照微信小程序开发规范进行了缺省设置,margin ...
- Docker 基础篇 入门篇
1.Docker入门 1.为什么要用docker? 相比于传统: 部署非常慢 成本非常高 资源浪费 难于迁移和扩展 可能会被限定硬件厂商 由于物理机的诸多问题,后来出现了虚拟机 一个物理机可以部署多个 ...
- .NET Core实战项目之CMS 第一章 入门篇-开篇及总体规划
作者:依乐祝 原文地址:https://www.cnblogs.com/yilezhu/p/9977862.html 写在前面 千呼万唤始出来,首先,请允许我长吸一口气!真没想到一份来自28岁老程序员 ...
随机推荐
- vs编码对编译的影响(UTF-8 no BOM编译通不过)
VS的编译器对Unicode源代码支持如下: UTF-16 little endian with or without byte order mark (BOM). UTF-16 big endian ...
- KiCad 一款强大的 BOM 和 装配图生成插件
KiCad 一款强大的 BOM 和 装配图生成插件 可以生成 BOM 和在线的图形. https://github.com/openscopeproject/InteractiveHtmlBom In ...
- 【C#】stream图像转byte的问题
Image xx = Image.FromStream(linkList[ii].stream); byte[] bytes = new Byte[linkList[ii].stream.Length ...
- 嵌入式C语言常见的错误
预处理的错误: #include “stdio.h” //引用符号错误 #inlcude <name> //自定义文件用 " " not find gcc -I ...
- github的markdown页内锚点以及本地资源链接
页内锚点参考 https://my.oschina.net/antsky/blog/1475173 [aaa](#2-aaabbb) 字母小写,.去掉,空格换成- 本地资源链接 [aaa](docs/ ...
- c# excel如何导入到sqlserver数据库
最近在做这个如何把excel导入到数据库中,经过多方查找,终于找到一个适合的,并且经过自己的完善可以正常使用(忘记原作者博客的链接地址了,敬请见谅) 首先是窗体的创建,文本框显示文件的路径,按钮执行操 ...
- Java Exception 和Error
(事先声明:该文章并非完全是我自己的产出,更多的是我个人在看到资料后通过理解并记录下来,作为自己阅读后的一个笔记:我现在试图对自己多年工作中的知识点做一个回顾,希望能融会贯通) (此文参考<Ja ...
- Linux系统编程——Daemon进程
目录 Daemon进程介绍 前提知识 Daemon进程的编程规则 Daemon进程介绍 Daemon运行在后台也称作"后台服务进程". 它是没有控制终端与之相连的进程.它独立与控制 ...
- js对象的创建
一.通过对象直接量来创建 var emptyt={}; //相当于var empty=new Object; //如果属性名中包含空格.连字符(-).还有关键字,保留字时,要用字符串表示 var b ...
- 电脑忘记WiFi密码了,但又想知道,该怎么办?
如何查看电脑已经连过的WiFi的密码? 你有没有遇到这样的情况,电脑之前连过的WiFi,正好手机也想连此WiFi,但是忘记密码了,没有WiFi的手机怎么能叫手机呢?.下面我们来看看如何查看已连接过的W ...