您的位置:首页 > 移动开发 > Android开发

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

2016-04-13 15:18 471 查看
1. 基本概念:

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

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

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



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绘图。

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

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

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

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

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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android View