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设计篇·入门篇·绘制简单自定义矩形图/设置按钮按下弹起颜色变化/设置图形旋转的更多相关文章

  1. 从零开始学Axure原型设计(入门篇)

    如果说Sketch是最美.最简洁的设计软件,那么Axure就是最强大的原型制作软件.Axure不仅能制作静态的视觉稿.页面,还能添加交互动作,是进行原型设计的最佳软件之一.虽然Axure的学习曲线比较 ...

  2. Java入门:绘制简单图形

    在上一节,我们学习了如何使用swing和awt工具创建一个空的窗口,本节学习如何绘制简单图形. 基本绘图介绍 Java中绘制基本图形,可以使用Java类库中的Graphics类,此类位于java.aw ...

  3. elasticsearch 第一篇(入门篇)

    介绍 elasticsearch是一个高效的.可扩展的全文搜索引擎 基本概念 Near Realtime(NRT): es是一个接近实时查询平台,意味从存储一条数据到可以索引到数据时差很小,通常在1s ...

  4. OpenGL入门程序一:绘制简单的矩形

    #include <GL/glut.h> void MyDisplay(void); int main(int argc, char **argv) { //设置窗口的大小 glutIni ...

  5. UI设计篇·入门篇·简单动画的实现,透明动画/旋转动画/移动动画/缩放动画,混合动画效果的实现,为动画设置监听事件,自定义动画的方法

    基本的动画构成共有四种:透明动画/旋转动画/移动动画/缩放动画. 配置动画的方式有两种,一种是直接使用代码来配置动画效果,另一种是使用xml文档配置动画效果 相比而言,用xml文档写出来的动画效果,写 ...

  6. UI设计篇·入门篇·简单动画的实现,为布局设置动画,用XML布置布局动画

    不仅仅控件可以设置动画,一个布局也可以设置动画, 当给一个布局设置了动画的时候,这个布局里所包含的控件都会依赖执行这些动画. 为布局设置动画的实现步骤: 1.新建一个动画,设置需要实现的形式 2.新建 ...

  7. 小程序UI设计之-介绍篇

    工具截图 此工具通过可视化操作进行布局,依据iphone6尺寸设置画布,可以自动生成rpx和百分比的wxss.后续还会增加js代码自动生成.工具中组件按照微信小程序开发规范进行了缺省设置,margin ...

  8. Docker 基础篇 入门篇

    1.Docker入门 1.为什么要用docker? 相比于传统: 部署非常慢 成本非常高 资源浪费 难于迁移和扩展 可能会被限定硬件厂商 由于物理机的诸多问题,后来出现了虚拟机 一个物理机可以部署多个 ...

  9. .NET Core实战项目之CMS 第一章 入门篇-开篇及总体规划

    作者:依乐祝 原文地址:https://www.cnblogs.com/yilezhu/p/9977862.html 写在前面 千呼万唤始出来,首先,请允许我长吸一口气!真没想到一份来自28岁老程序员 ...

随机推荐

  1. c++ 创建线程以及参数传递

    //创建线程,传递参数 DWORD dwThreadID = ; HANDLE hThread = CreateThread(NULL, , MonitorThreadFunction, , & ...

  2. ubuntu下Qt链接MySQL: QMYSQL driver not loaded(不用重新编译源码)

    先切换到qt数据库驱动目录即:qt安装目录下的gcc_64/plugins/sqldrivers,然后 ldd libqsqlmysql.so 若libmysqlclient.so.18 not fo ...

  3. python统计目录和目录下的文件,并写入excel表

    运营那边提出需求,有些媒体文件需要统计下 目录结构大概是这样的 每个目录下面都有很多文件,目录下面没子目录 我这里是模拟下创建的目录和文件,和运营那边说的目录结构都是一致的 想最终统计结果如下格式 我 ...

  4. python面试题--数据类型

    数据类型 字典 dict:字典,字典是一组键(key)和值(value)的组合,通过键(key)进行查找,没有顺序, 使用大括号”{}”;应用场景:dict,使用键和值进行关联的数据; 现有字典d={ ...

  5. redis 批量删除 keys

    #!/bin/bash redis_list=("192.168.252.174:7000" "192.168.252.174:7001" "192. ...

  6. DiscuzX /source/function/function_core.php通用核心函数库文件分析

    ... <?php /** * [Discuz!] (C)2001-2099 Comsenz Inc. * This is NOT a freeware, use is subject to l ...

  7. python基础知识10---算法

    一.递归 程序本身自己调用自己称之为递归,类似于俄罗斯套娃,体现在代码中:用户执行最外(N)层函数,最外侧调用N-1层函数,N-1层函数调用N-2层函数... 利用函数编写如下数列: 斐波那契数列指的 ...

  8. .Net Core跨平台应用研究-CustomSerialPort(增强型跨平台串口类库)

    .Net Core跨平台应用研究-CustomSerialPort -增强型跨平台串口类库 摘要 在使用SerialPort进行串口协议解析过程中,经常遇到接收单帧协议数据串口接收事件多次触发,协议解 ...

  9. 简单的爬虫爬的完整的<img>标签,修改正则即可修改爬取内容

    简单的爬虫爬的完整的<img>标签,生成<img>标签结果文件与爬虫经历的网页. <?php/** 从给定的url获取html内容** */function _getUr ...

  10. 2018-2019-2 20165312《网络攻防技术》Exp1 PC平台逆向破解

    2018-2019-2 20165312<网络攻防技术>Exp1 PC平台逆向破解 一.Exp1.1 直接修改程序机器指令,改变程序执行流程 知识要求:Call指令,EIP寄存器,指令跳转 ...