Android群英传--绘图机制与处理技巧(一)

来源:互联网 发布:java游戏移植官网 编辑:程序博客网 时间:2024/05/29 17:33

1. 基本概念:

屏幕大小:指的是屏幕对较线的长度,通常使用寸作为单位,1=3.333˙

分辨率:指的是手机屏幕的像素点个数,如720x1080就是说宽有720个像素点,高有1080个像素点(竖直方向)

PPI/DPI:每英寸(1英寸=2.54厘米)像素,由对角线的像素点数(线=2+2)除以对角线长度得出。

常见的DPI

DP/DIP:独立像素密度。Android规定使用mdpi(即像素密度值为160)作为屏幕的标准,在这个屏幕上,1PX = 1DP。

其他的分辨率的换算比例:
ldpi:mdpi:hdpi:xhdpi:xxhdpi = 3:4:6:8:12

ps:截取的友盟指数:2016年2月份(Android机型)
分辨率排行

附常见单位总结:

in(英寸):长度单位。
mm(毫米):长度单位
cm(厘米):长度单位
pt(磅):长度单位,1pt = 1/72英寸,常用于排版

px(像素):屏幕上的像素点
dp/dip(独立像素密度):在每英寸160点像素点的显示器上,1dp = 1px
sp(放大像素):与dp类似,但是可以根据用户的字体大小首选项进行缩放。


2. 绘图分类:

Android常见的绘图有两种:View绘图和XML绘图。

  1. View绘图中有三种常用的类:View类,SurfaceView类,GLSurfaceView类。

    View类是主要的绘图类,重写其onDraw()方法来进行自定义的绘制。需要手动更新。

    SurfaceView的UI就可以在一个独立的线程中进行绘制,又由于不会占用主线程资源,主要是用于更新频率较快的场景,如游戏画面的渲染等。

    GLSurfaceView主要是用于绘制三维的视图,承载OpenGL ES的一个集合类。

  2. XML绘图常用的标签有:Bitmap(位图),Shape(形状),Layer(图层),Selector(选择器)。

Bitmap(位图):可以直接把图片转换成Bitmap保存起来,便于调用。

<!--将drawable下的ic_launcher图片转换成bitmap--><?xml version="1.0" encoding="utf-8"?><bitmap xmlns:android="http://schemas.android.com/apk/res/android"    android:src="@drawable/ic_launcher"></bitmap>

Shape(形状):可以自己定制图形,并方便的应用于background,src等属性上。

shape支持的属性:

<?xml version="1.0" encoding="utf-8"?><shape xmlns:android="http://schemas.android.com/apk/res/android"    android:shape="rectangle(矩形) || line(线条) || oval(椭圆) || ring(圆)">    <!--当shape为rectangle时使用,可以设置矩形的四个角的半径,常用来画圆角矩形,radius属性会后边的单独的radius属性覆盖-->    <corners        android:radius="整形值"  //四个角的半径        android:topLeftRadius="整形值" //左上角半径        android:topRightRadius="整形值" //右上角半径        android:bottomLeftRadius="整形值" //左下角半径        android:bottomRightRadius="整形值"/> //右下角半径    <gradient  //渐变效果        android:type=" linear (线性)|| sweep(扫描状)|| radial(放射状)" //渐变类型        android:startColor="color" //渐变开始颜色        android:endColor="color" //渐变结束颜色        android:angle="整形" //    />    <padding //内填充边距        android:left="整形值" //左边距        android:top="整形值" //上边距        android:right="整形值" // 右边距        android:bottom="整形值" /> // 下边距    <size  //尺寸大小        android:width="整形值"//宽        android:height="整形值"//高        />    <solid //填充色        android:color="color"        />    <stroke //边框        android:width="整形"        android:color="color"        /></shape>
<!--Shape的一个简单示例,效果如下图--><?xml version="1.0" encoding="utf-8"?><shape xmlns:android="http://schemas.android.com/apk/res/android"    android:shape="rectangle">    <gradient        android:type="sweep"        android:startColor="#ff5da2ff"        android:endColor="#805fbbff"        android:angle="45"/>    <padding        android:left="7dp"        android:top="7dp"        android:right="7dp"        android:bottom="7dp" />    <corners        android:radius="8dp"/></shape>

效果图

Layer(图层):作用相当于Photoshop中的图层一样,实现图片的依次叠加。

<!--效果如下图--><?xml version="1.0" encoding="utf-8"?><layer-list xmlns:android="http://schemas.android.com/apk/res/android">    <item android:drawable="@drawable/ic_launcher"/>    <item        android:drawable="@drawable/ic_launcher"        android:left="20.0dp"        android:top="20.0dp"        android:bottom="20.0dp"        android:right="20.0dip" /></layer-list>

效果图

Selector:选择器,可以实现组件在不同状态下的反馈,比如无焦点时,选中时,点击时的反馈效果。

<!--还有很多属性尚未列出--><?xml version="1.0" encoding="utf-8"?><selector xmlns:android="http://schemas.android.com/apk/res/android">    <item android:drawable="#80f7b4" /><!--默认时的背景-->    <item        android:state_pressed="false"        android:drawable="#0780f2"/><!--未被点击的效果-->    <item        android:state_pressed="true"        android:drawable="#03fd95"/><!--被点击时的效果--></selector>
0 0
原创粉丝点击