图片资源放在
这些文件夹中,它们对应着不同的分辨率,android应用将根据当前设备的分辨率来对应的文件夹中访问资源
若你的图片不分分辨率,则手动简历一个drawable文件夹,把图copy进里面
drawable资源很简单,不需要xml,只要把图片拖进去,根据名称就可以找到
程序中使用一个叫icon.png的图片
imageView.setImageResource(R.drawable.icon);
资源中使用
<ImageView
android:id="@+id/image_view"
android:layout_width="100dp"
android:layout_height="100dp"
android:src="@drawable/icon"
/>
横屏时或者其他分辨率变化的情况,会导致图片拉伸,图片主体一般可以拉,边缘拉伸就不好看了.
此时需要使用9path来将图片变为九宫格图片
这个工具是 sdk\tools\draw9patch.bat
打开一张png图片,我们可以在png图片最外面的空格画一个像素宽的黑线。图片左边黑线的高度决定了垂直拉升时的扩展区域,也即当垂直拉伸时,只有这个区域的图片会被拉伸。同理图片上边的黑线长度决定了水平拉升时的扩展区域。图片右边的黑线可以不画,默认是指可以压扁到0px,画上黑线后,垂直方向就只可以压扁到右边黑线的高度了。图片下方的情况也一样。
从中我们也可以理解为什么叫 nine patch,相当于把一张png图分成了9个部分,分别为4个角,4条边,以及一个中间区域,4个角是不做拉升的,所以还能一直保持圆角的状态,而2条水平边和垂直边分别只做水平和垂直拉伸,所以不会出现边会被拉粗的情况,只有中间用黑线指定的区域做拉伸。结果是图片不会走样。
如果我有个按钮,希望点击时背景变化,则应该使用selector
建个xml文件.Resource还是drawable,选择root为selector
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:drawable="@drawable/btn1" android:state_pressed="false" />
<item android:drawable="@drawable/btn_pressed" android:state_pressed="true"/>
</selector>
然后在布局文件中,将background设置为此xml
<Button
android:id="@+id/button2"
android:layout_width="fill_parent"
android:layout_height="30dp"
android:text="Button"
android:background="@drawable/btn_bg"/>
点击图片,则会发现背景会变