当前位置: 代码迷 >> Android >> Android Drawable小结
  详细解决方案

Android Drawable小结

热度:63   发布时间:2016-05-01 11:21:44.0
Android Drawable总结

Drawable有几种

1:Bitmap

? ? ? ?支持格式:.png (preferred), .jpg (acceptable), .gif (discouraged).

将Bitmap文件放在drawable文件夹下会被AAPT自动优化

2:XML Bitmap

? ? ? ?An XML bitmap is a resource defined in XML that points to a bitmap file.?

? ? ? ?The effect is an alias for a raw bitmap file

? ? ? ?<?xml version="1.0" encoding="utf-8"?>

<bitmap

? ? xmlns:android="http://schemas.android.com/apk/res/android"

? ? android:src="@[package:]drawable/drawable_resource"

? ? android:antialias=["true" | "false"]

? ? android:dither=["true" | "false"] ? ?抖动??

? ? android:filter=["true" | "false"] ? ?控制图片是否缩放或则拉伸

? ? android:gravity=["top" | "bottom" | "left" | "right" | "center_vertical" |

? ? ? ? ? ? ? ? ? ? ? "fill_vertical" | "center_horizontal" | "fill_horizontal" |

? ? ? ? ? ? ? ? ? ? ? "center" | "fill" | "clip_vertical" | "clip_horizontal"]

? ? android:tileMode=["disabled" | "clamp" | "repeat" | "mirror"] />

? ? Defines the tile mode. When the tile mode is enabled, the bitmap is repeated.?

? ? Gravity is ignored when the tile mode is enabled.

3:Nine-Patch

? ? ?You typically assign this type of image as the background of a View?

? ? ?that has at least one dimension set to "wrap_content",?

? ? ?and when the View grows to accomodate the content,

? ? ?the Nine-Patch image is also scaled to match the size of the View

4:XML Nine-Patch

? ? ?An XML Nine-Patch is a resource defined in XML that points to a Nine-Patch file.

? ? ?The XML can specify dithering for the image

? ? ?<?xml version="1.0" encoding="utf-8"?>

<nine-patch

? ? xmlns:android="http://schemas.android.com/apk/res/android"

? ? android:src="@[package:]drawable/drawable_resource"

? ? android:dither=["true" | "false"] /> ?图片与屏幕像素不一样的时候,会拉伸?

5:Layer List

? ? A LayerDrawable is a drawable object that manages an array of other drawables.

? ? <layer-list

? ? xmlns:android="http://schemas.android.com/apk/res/android" >

? ? <item

? ? ? ? android:drawable="@[package:]drawable/drawable_resource"

? ? ? ? android:id="@[+][package:]id/resource_name"

? ? ? ? android:top="dimension"

? ? ? ? android:right="dimension"

? ? ? ? android:bottom="dimension"

? ? ? ? android:left="dimension" ></item>

? ? </layer-list>

? ? <item></item>标签里可以利用<bitmap/>标签装载图片,此时图片将不会被拉伸。

? ? <item>

? ? ? ? <bitmap android:src="@drawable/image"

? ? ? ? ? ? ?android:gravity="center" />

? ? </item>

6:State List

? ? 不同状态显示不同的图片 常用于背景

? ? During each state change, the state list is traversed top to bottom and the first item?

? ? that matches the current state is used—the selection is not based on the "best match,"?

? ? but simply the first item that meets the minimum criteria of the state.

? ? <?xml version="1.0" encoding="utf-8"?>

<selector xmlns:android="http://schemas.android.com/apk/res/android">

? ? <item android:state_pressed="true"

? ? ? ? ? android:drawable="@drawable/button_pressed" /> <!-- pressed -->

? ? <item android:state_focused="true"

? ? ? ? ? android:drawable="@drawable/button_focused" /> <!-- focused -->

? ? <item android:state_hovered="true"

? ? ? ? ? android:drawable="@drawable/button_focused" /> <!-- hovered -->

? ? <item android:drawable="@drawable/button_normal" /> <!-- default -->

</selector>

7:Level List 有什么用

? ? ?A Drawable that manages a number of alternate Drawables, each assigned a maximum numerical value.

? ? ?Setting the level value of the drawable with setLevel() loads the drawable resource in the level list?

? ? ?that has a android:maxLevel value greater than or equal to the value passed to the method.

? ? ? <level-list xmlns:android="http://schemas.android.com/apk/res/android" >

? ? ? ? ? <item

? ? ? ? ? ? ? android:drawable="@drawable/status_off"

? ? ? ? ? ? ? android:maxLevel="0" />

? ? ? ? ? <item

? ? ? ? ? ? ? android:drawable="@drawable/status_on"

? ? ? ? ? ? ? android:maxLevel="1" />

? ? ? ?</level-list>

8:Transition Drawable ?可以让两张图片同时淡入淡出(也只能包含两张图片)

? ? ? <?xml version="1.0" encoding="utf-8"?>

? ? ? ? ?<transition xmlns:android="http://schemas.android.com/apk/res/android">

? ? ? ? ? ? <item android:drawable="@drawable/on" />

? ? ? ? ? ? <item android:drawable="@drawable/off" />

? ? ? ? ?</transition>

9:Inset Drawable

? ? A drawable defined in XML that insets another drawable by a specified distance.?

? ?This is useful when a View needs a background that is smaller than the View's actual bounds.

? ?<inset xmlns:android="http://schemas.android.com/apk/res/android"

? ? android:drawable="@drawable/background"

? ? android:insetTop="10dp"

? ? android:insetLeft="10dp" />

10:Clip Drawable 把原图的长,宽,厚度都分成10000level,以此切割

? ? <?xml version="1.0" encoding="utf-8"?>

? ? ? ? ?<clip xmlns:android="http://schemas.android.com/apk/res/android"

? ? android:drawable="@drawable/android"

? ? android:clipOrientation="horizontal"

? ? android:gravity="left" />?

? ? ImageView imageview = (ImageView) findViewById(R.id.image);

? ? ClipDrawable drawable = (ClipDrawable) imageview.getDrawable();

? ? drawable.setLevel(drawable.getLevel() + 1000);

? ? Increasing the level reduces the amount of clipping and slowly reveals the image.

11:Scale Drawable

? ? ?A drawable defined in XML that changes the size of another drawable based on its current level.

? ? ?<?xml version="1.0" encoding="utf-8"?>

<scale xmlns:android="http://schemas.android.com/apk/res/android"

? ?android:drawable="@drawable/logo"

? ? ?android:scaleGravity="center_vertical|center_horizontal"

? ?android:scaleHeight="80%"

? ?android:scaleWidth="80%" />

12:Shape Drawable

? ? ? ?<shape

? ? xmlns:android="http://schemas.android.com/apk/res/android"

? ? android:shape=["rectangle" | "oval" | "line" | "ring"] >

? ? <corners

? ? ? ? android:radius="integer"

? ? ? ? android:topLeftRadius="integer"

? ? ? ? android:topRightRadius="integer"

? ? ? ? android:bottomLeftRadius="integer"

? ? ? ? android:bottomRightRadius="integer" />

? ? <gradient

? ? ? ? android:angle="integer" ? ?必须是45的倍数,0:从左到右,90:从下到上

? ? ? ? android:centerX="integer"

? ? ? ? android:centerY="integer"

? ? ? ? android:centerColor="integer"

? ? ? ? android:endColor="color"

? ? ? ? android:gradientRadius="integer" ? ? android:type="radial"时有效, ?放射状

? ? ? ? android:startColor="color"

? ? ? ? android:type=["linear" | "radial" | "sweep"]

? ? ? ? android:useLevel=["true" | "false"] />

? ? <padding

? ? ? ? android:left="integer"

? ? ? ? android:top="integer"

? ? ? ? android:right="integer"

? ? ? ? android:bottom="integer" />

? ? <size ? ? ? ? ? ? ? ? ? ? ? ? ? ?默认是填满控件

? ? ? ? android:width="integer"

? ? ? ? android:height="integer" />

? ? <solid

? ? ? ? android:color="color" />

? ? <stroke

? ? ? ? android:width="integer"

? ? ? ? android:color="color"

? ? ? ? android:dashWidth="integer" ? ? 跟下面一个属性配套,要一起设置才有效

? ? ? ? android:dashGap="integer" />

</shape>

?

? ? 若要有不清楚的,请查看官方文档:http://developer.android.com/guide/topics/resources/drawable-resource.html

  相关解决方案