Android 绘图机制与处理技巧-1
来源:互联网 发布:淘宝卖家电话在哪 编辑:程序博客网 时间:2024/05/17 22:51
android 屏幕相关知识
- 屏幕参数
- 屏幕大小
屏幕大小指对角线的长度,通常用寸表示(1寸=3.3333333厘米(cm)) - 分辨率
分辨率指手机像素点的个数为 width * height 模式 - PPI
每英寸像素(Pixels per Inch,DPI),由对角线的像素点除以对角线的长度得到的
- 屏幕大小
- 系统的屏幕密度(PPI,由Google定义的标准的屏幕密度,为了减少屏幕的碎片化,也为了更好的屏幕适配)
- 系统屏幕密度分类
密度 ldpi mdpi hdpi xhdpi xxhdpi密度值 120 160 240 320 480分辨率 240×320 320×480 480×800 720×1280 1080×1920 - 独立像素密度
- 独立像素密度是相对于物理像素密度提出的,是为了解决在不同的设备上的物理屏幕密度大小不一样的问题
- Android 以160(mdpi)的屏幕密度大小为标准,规定1px=1dp(dip),其他的物理密度可以通过这个密度进行转化为独立像素密度
转化的比例为 l:m:h:xh:xxh = 3:4:6:8:12 其中m为基准 - 用于代码的转换公式 dp * scale = px,只要找到scale就可以进行转换了,
- 系统屏幕密度分类
float scale = getApplicationContext().getResources().getDisplayMetrics().density;
平面绘图基本知识
- 平面绘图一共需要两个类加上一个形状,这两个类是指Canvas和Paint类,而这个形状是指由canvas内决定的画什么形状,内容由多种形式提供,XML、Java代码等
- 基本的Canvas和Paint的使用粗略的说一下,因为这个API真的非常好理解canvas.drawRect();一看就是画矩形的。你可以想象一下真实世界里面的画布和画笔就可以得知功能了,画布决定了哪些内容会呈现,而画笔则决定了画的颜色啊,形状啊,等等。这里说一下Path的使用
- Path的使用步骤
- 首先移动到一个位置
path.moveTo(x,y); - 开始画东西,比如画一条线
path.lineTo(a,b) 上面的这两行代码的含义是从(x,y)到(a,b)画一条线
3.在调好画笔的颜色宽度等的情况下使用canvas,drawPath()将这条路径画上去
- 首先移动到一个位置
- Path的使用步骤
- XML 绘图
- 通过XML文件对图像的引用、描绘等也是可以画图的,比如常用的src=”@drawable/ic_launcher”这就是最常见的使用XML绘图的例子,所有绘制的图形的XML文件和图片文件都应该放在res/drawable下
- shape绘图基本知识,下面由代码来展示,忽略掉了具体的配置情况
<?xml version="1.0" encoding="utf-8"?><!--默认是rectangle--><shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="通过这个属性来设置具体的形状"> <corners/> <!--这个属性在shape为矩形的时候调用--> <gradient/> <!--渐变,主要用来调整颜色,--> <solid/> <!--直接为shape填充颜色--> <padding/> <!--调整shape与边框之间的间距,这个属性要配合layer-list来使用,否则是没效果的--> <size/> <!--设置宽度--> <stroke/> <!--指定边框的相关属性--></shape>
在绘制Android群英传中的一个Shape的时候差点崩掉,就是Layer上面的那个图,怎么设置的padding没有效果呢?想来想去没结果,最后看到这是个层叠的形状,那么试试layer-list吧,结果还真是,用书上的那段代码真的是弄不出来,下面贴出我的这段代码
<?xml version="1.0" encoding="utf-8"?><layer-list> <item> <!--前面的绘制的边界是下一个绘制的新边界,例如我第一个设置了padding,那么新的边界=原边界-padding的值--> <shape android:shape="rectangle" xmlns:android="http://schemas.android.com/apk/res/android"> <gradient android:startColor="#171717" android:endColor="#000000" android:angle="45"/> <padding android:top="0dp" android:left="0dp" android:right="7dp" android:bottom="7dp"/> <corners android:radius="8dp"/> </shape> </item> <item> <shape android:shape="rectangle" xmlns:android="http://schemas.android.com/apk/res/android"> <gradient android:startColor="#981573" android:endColor="#80bf176b" android:angle="45"/> <corners android:radius="8dp"/> </shape> </item></layer-list>
并且发现了一个现象,就是你在上一层设置了padding,但是padding值并不在这个图层显示出来这个值的效果,并不是失效了,这个padding其实是为下一个图层做的准备,因为下个图层就会绘制到这个设置了padding的图层上,padding值的效果就会显现出来
* Selector 选择器的使用,一般使用在存在切换效果的控件中。例如给Button设置点击和未点击时候的背景的时候就可以使用这个Selector来做,未选中是一个效果,选中就又是一个效果,下面给出一个常用的例子
<selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="true" android:drawable="@drawable/shape_introduce"/> <!--这些i颜色是可以替换成shape的或者layer-list的,只要是能显示出来的基本上都能替换--> <item android:drawable="@color/colorPrimary"/></selector>
别小看这个例子,当时可是弄了我很长一段时间的,你不信试试将这两个item颠倒一下,你会发现颠倒了以后就没效果了,我也不知道怎么回事,到最后只能强制记住了,先写pressed的,再写正常状态下的
好了今天的任务结束了,还要回去背单词~~~~啊
0 0
- Android 绘图机制与处理技巧-1
- Android绘图机制与处理技巧
- Android绘图机制与处理技巧
- Android绘图机制与处理技巧
- Android绘图机制与处理技巧
- Android绘图机制与处理技巧(一)2D绘图技巧与XML绘图
- Android群英传之Android绘图机制与处理技巧
- Android群英传之Android绘图机制与处理技巧
- 《Android群英传》读书笔记6.Android绘图机制与处理技巧
- Android群英传学习-Android绘图机制与处理技巧
- Android绘图机制与处理技巧-更新中
- Android群英传--绘图机制与处理技巧(一)
- Android群英传--绘图机制与处理技巧(三)
- Android绘图机制与处理技巧(一)——Android绘图技巧
- Android绘图机制与处理技巧(二)Android绘图技巧
- 第6章 Android绘图机制与处理技巧(Part 1)
- Android绘图机制及处理技巧
- Android绘图机制与处理技巧(三)Android图像处理之色彩特效处理
- 感受ORM中javabean的用法
- Machine Learning with Scikit-Learn and Tensorflow 7.1 Voting Classifiers
- dubbo使用
- C#131课的主要内容
- (八)k-dTree库教程一--k-d树在PCL中的应用
- Android 绘图机制与处理技巧-1
- [iOS]Objective-C中字符串数据类型与基础数据类型的相互转换
- 从硬件获得内存布局--e820
- Scr888 Recommend iBET iPHONE 7 Red Lucky Draw
- java 递归全排列 (数组,容器两种实现)
- (九)OcTree教程一--OcTree原理介绍
- 51nod 1333 无聊的数学家们
- ZOJ-3261(并查集续路径压缩,灵活应用)
- [树的直径] BZOJ 1999 [Noip2007]Core树网的核