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

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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值