Android day04
- 第一步,手动创建drawable文件夹。
BitmapDrawable
使用bitmap做平铺效果。
<bitmap xmlns:android="http:......"
android:src=“@drawable/ic_launcher”
android:titleMode:“repeat”
/>
<!-- titleMode 显示的模式
repeat : 平铺,使用较多
clamp
mirror-->
clipDrawable
剪切其他图片的位图,做出裁剪效果
<clip xmlns:android="http://...."
android:drawable="@drawable/source"
android:clipOrientation="vertical"
android:gravaty="top"
/>
<!-- 使用android:drawable来确定图片
clipOrientation 确定剪切的方向,两个属性vertical,horizontal
gravity 确定裁剪的位置-->
<ImageView
android:id="@+id/iv"
..../>
protected void onCreate(Bundle saveInstanceState){
//部分代码省略...
//获得控件
ImageView iv = (ImageView)findViewById(R.id.iv);
//获得控件对应的图片
ClipDrawable drawable = (ClipDrawable) iv.getDrawable();
public void clickEvent(View v){
//获得图片还没有剪裁的原始等级 10,000是图片的最高等级
int level = drawable.getLevel();
//得到图片的原始等级0
if(level < 10000){
drawable.setLevel(Level+500)
}
}
//没有改变内存大小,但是减少了渲染压力。
}
StateListDrawable
button
<selector xmlns:android="http://...">
<!-- 1.添加图片
2.state_pressed: true 按下的状态,false, .... -->
<item android:drawable="@drawable/p"
android:state_pressed="true"</item>
<item android:drawable="@drawable/p2"
android:state_pressed="false"</item>
</selector>
<!-- Button中的backgroud指定到这个xml
按下去显示p,松开切换到p2 -->
checkbox
<selector xmlns:android="http://...">
<!-- 1.添加图片
2.state_checked: true 选中的状态,false, .... -->
<item android:drawable="@drawable/p3"
android:state_checked="true"</item>
<item android:drawable="@drawable/p4"
android:state_checked="false"</item>
<!-- 如果不想写,可以去掉android:state_checked="false",但是必须放在后面才会有效果。否则必须写上 -->
</selector>
<!-- 如果不是简单的背景效果,需要将图片和文字分割开来的话,就不要使用background属性。
Transition
转换、动画效果
<transition xmlns:android="http://...">
<item android:drawable="@drawable/p1"/>
<item android:drawable="@drawable/p2"/>
<item android:drawable="@drawable/p3"/>
</transition>
<!-- 在ImageView中引用 -->
ImageView iv = (ImageView) findViewById(R.id.iv);
TransitionDrawable drawable = (TransitionDrawable) iv.getDrawable();
drawable.startTransition(2000);//2000ms
LayerListDrawable
<layer-list xmlns:android="...">
<item android:drawable="...1" android:id="...1"/>
<item android:drawable="...2" android:id="...2"/>
</layer-list>
<!-- ProgressBar ProgressDrawable属性调用此xml -->
<layer-list xmlns:android="...">
<item android:drawable="...1" adnroid:Top="??dp" android:Left.../>
<item android:drawable="...2" adnroid:TOP="??dp" android:Left.../>
</layer-list>
<!-- ImageView中可以调用这个 -->
LevelListDrawable
管理一批交替的图片,通过 setLevel() 显示其中一个。
<level-list xmlns:android="...">
<item
android:drawable="@drawable/p"
android:maxLevel="0"/>
<item
android:drawable="@drawable/p2"
android:maxLevel="1"/>
<item
android:drawable="@drawable/p3"
android:maxLevel="2"/>
<item
android:drawable="@drawable/p4"
android:maxLevel="3"/>
<!-- 排放注意顺序 -->
</level-list>
<!-- ImageView -> drawable
EditText -> android:inputType
Button -> onClick
find by id
设置点击事件,得到输入框内容 content
得到ImageView的drawable,强转成LevelListDrawable
drawable.setLevel(Integer.parse(content))-->
InsetDrawable
<inset xmlns:android="..."
android:drawable="@drawable/p"
android:insetLeft="10dp"
android:insetRight="10dp"
android:insetTop="10dp"
android:insetBottom,="10dp"/>
<!-- 可以被padding替代 -->
Shape
<shape xmlns:android="..."
android:shape="rectengle"><!-- oval ring ling -->
<!-- innerRadius内环半径,innerRadiusRatio内环半径(比例)
thickness圆环的厚度
useLevel一般不使用-->
<soild
android:color="rgb"/>
<stroke
android:width="?dp"
android:color="rgb"/>
<size
android:width
android:heigth/>
<gradient
android:startColor=""
android:centerColor=""
android:endColor=""
android:type="radial"/>
<!-- 颜色填充的值,但他是一个渐变的值,不能和soild同时出现。
radial放射效果-->
</shape>
View里面什么属性都没有的话,默认是占整个屏幕
Selector,Item中嵌套shape
<selector ...>
<item android:state_pressed="true">
<shape>...</shape>
</item>
</selector>
NinePatch
ADT -> SDK -> tools
不规则图形制作拉伸工具。
使用方法略简单,不多做记录了。