一吭露、Drawable目錄(res/drawable)
1、bitmap 孝冒,位圖
<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
android:antialias="true"
android:dither="true"
android:src="@drawable/wang"
android:tileMode="mirror"> ??</bitmap>
tileMode: 平鋪屬性? antialias:抗鋸齒? dither:抗抖動
mirror 鏡像? 圖片有倒立面 ? ?repeat 重復(fù)? 圖片重復(fù)填充
clamp? 邊緣拉伸? 效果奇怪? disable 默認(rèn) 圖片默認(rèn)顯示
2柬姚、clip,圖片裁剪
<clip xmlns:android="http://schemas.android.com/apk/res/android"
android:drawable="@color/colorPrimary"
android:clipOrientation="horizontal"
android:gravity="left"> </clip>
clipOrientation:裁剪方向? gravity:裁剪起始位置
在代碼實現(xiàn)裁剪庄涡,通過調(diào)用setLevel()量承,取值0~10000,0完全不見穴店,10000完全顯示
mDrawable= (ClipDrawable)mImageView.getDrawable();
mDrawable.setLevel(5000);
3撕捍、inset,插入圖片
<inset xmlns:android="http://schemas.android.com/apk/res/android"
android:drawable="@color/colorPrimary"
android:insetLeft="50dp"
android:insetRight="50dp"
android:insetTop="50dp"
android:insetBottom="50dp"> </inset>
邊距:insetLeft泣洞,insetRight忧风,insetTop,insetBottom
4球凰、layer狮腿,圖層,列表最后一個繪制在最上層
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:left="20dp" android:top="20dp">??
<bitmap ??android:gravity="center" ??android:src="@drawable/wang"/>
</item>
<item android:left="20dp" android:top="20dp">
<bitmapandroid:gravity="center"android:src="@drawable/wang"/>
</item> ? </layer-list>
5呕诉、lever-list 缘厢,等級列,顯示對應(yīng)等級的圖片
<level-list xmlns:android="http://schemas.android.com/apk/res/android">
<item?android:drawable="@drawable/close"?android:minLevel="6"?android:maxLevel="10" />
<item?android:drawable="@drawable/open"?android:minLevel="12"?android:maxLevel="20"/>
</level-list> ?
代碼實現(xiàn):
<ImageView ??android:id="@+id/level" ??android:src="@drawable/level"
android:layout_width="wrap_content" ? ?android:layout_height="wrap_content" />
mImageView.setImageLevel(8);
6甩挫、scale贴硫,圖片縮放
<scale xmlns:android="http://schemas.android.com/apk/res/android"
android:drawable="@drawable/wang" android:scaleGravity="center"
android:scaleWidth="50%" ??android:scaleHeight="50%" ?> </scale>
7、shape伊者,圖片形狀
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid ?android:color="@color/colorAccent"/>
<corners ?android:radius="32dp"/>
<stroke ??android:width="12dp" ??android:color="@color/colorPrimary"
android:dashGap="12dp" ? ?android:dashWidth="12dp"/> ?</shape>
8英遭、selector拖刃,監(jiān)聽控件狀態(tài)
<selector ?xmlns:android="http://schemas.android.com/apk/res/android">
<item ?android:state_pressed="true" ?android:drawable="@drawable/wang0"/>
<item ?android:state_focused="true" ?android:drawable="@drawable/wang5"/>
<item ?android:drawable="@color/colorPrimary"/> ? </selector>
9、shape和selector結(jié)合使用
<?xml version="1.0" encoding="utf-8"? >
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="rectangle">
<corners /> <stroke /> <solid />
</shape>
</item>
</selector>
10贪绘、transition 兑牡,兩張圖片間透明度的漸變
<transition ?xmlns:android="http://schemas.android.com/apk/res/android">
<item ?android:drawable="@drawable/close">
<item ?android:drawable="@drawable/open"> </transition>
11、animation-list 逐幀動畫
<animation-list ?xmlns:android="http://schemas.android.com/apk/res/android">
<item ?android:drawable="@drawable/v_anim1" ?android:duration="300"/>
<item ?android:drawable="@drawable/v_anim2" ?android:duration="300"/>
<item ?android:drawable="@drawable/v_anim3" ?android:duration="300"/>
</animation-list>
代碼實現(xiàn):
二税灌、Interpolator 補(bǔ)間動畫(res/anim)
1均函、AlphaAnimation
2、ScaleAnimation
3菱涤、TranslateAnimation
4苞也、RotateAnimation
5、插值器(負(fù)責(zé)補(bǔ)間動畫的平滑過渡)
xml文件:android:interpolator="@android:anim/accelerate_decelerate_interpolator"
6粘秆、直接使用插值器
7如迟、動畫執(zhí)行監(jiān)聽回調(diào)
8、ViewPropertyAnimator的用法
view中的方法攻走,例如:textview.animate().alpha(0f);?
注意:在xml里配置動畫屬性的時候殷勘,有很多屬性沒有在輸入?yún)?shù)列里提示,需要自己手寫輸入昔搂,例如時間 android:duration=""玲销,單位毫秒,根據(jù)自己的需求手動輸入各種隱藏屬性摘符。
三贤斜、Property Animator 屬性動畫(res/animator)
1、ValueAnimator
基本用法逛裤,四種類型 of(int,float,argb,object):
ValueAnimator valueAnimator = ValueAnimator.ofInt(0, 100);
2瘩绒、ObjectAnimator (ValueAnimator子類)
ObjectAnimator objectAnimator = ObjectAnimator.ofFloat(viewGroup, "translationY", toY);
objectAnimator.setDuration(500).start();
3、動畫同時執(zhí)行
4带族、動畫執(zhí)行監(jiān)聽回調(diào)
4锁荔、自定義動畫效果
四、Transistion Animation 過渡動畫(res/transition )
簡介:本質(zhì)是屬性動畫炉菲,實現(xiàn)了二次封裝堕战,方便開發(fā)者實現(xiàn)Activity或View的過渡動畫效果,過渡動畫的使用很簡單拍霜,首先需要準(zhǔn)備過渡動畫前后兩個不同的布局文件嘱丢,這兩個布局文件的根布局具有相同的id屬性值。
1祠饺、過渡動畫
2越驻、實現(xiàn)步驟:
五、ColorSelect(res/color)
<xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" android:enterFadeDuration="500">
<item android:state_pressed="true"?android:color="@color/color_fff" />
</selector>
六、漣漪效果(Ripple)
有邊界的漣漪效果:
android:background="?android:attr/selectableItemBackground"
無邊界的漣漪效果:
android:background="?android:attr/selectableItemBackgroundBorderless"
自定義漣漪效果:
<ripple xmlns:android="http://schemas.android.com/apk/res/android" android:color="@color/color_333">
<item>
????<shape android:shape="rectangle">
????????<corners android:radius="@dimen/dimen_px_60" />
????????<solid android:color="@color/color_fff"/>
????????<stroke android:color="@color/color_c70017"?
????????????????????android:width="@dimen/dimen_px_01"/>
????</shape>
</item>
記得設(shè)置控件為可點擊狀態(tài):
android:clickable="true"
七缀旁、顯示效果(Reveal)
Animator animator = ViewAnimationUtils.createCircularReveal(mImageView,centerX,centerY,startRadius,endRadius);
animator.setDuration(1000);
animator.start();
八记劈、常見問題
Selector的item狀態(tài)失效,情況1:item的順序問題并巍,默認(rèn)的顯示效果需要放在最后目木。情況2:View的本身是否有item中監(jiān)聽的狀態(tài),如state_check懊渡,Checkbox有該屬性刽射,而Button沒有該屬性,所以Checkbox生效剃执,而Button則不生效誓禁。情況3:view的本身有item中監(jiān)聽的狀態(tài),但設(shè)置后不生效肾档,需要為View設(shè)置對應(yīng)的監(jiān)聽摹恰,如state_press,TextView本身有該屬性怒见,但按下沒有反應(yīng)俗慈,為TextView設(shè)置View.OnClickListener后,TextView的state_press狀態(tài)監(jiān)聽生效速种,或者在控件添加android:clickable="true"屬性姜盈。
動畫執(zhí)行后遺留問題,建議使用最新的動畫API配阵,如:Animator(三) > Animation(四) > Interpolator(二)。
動畫移動的參數(shù)坐標(biāo)是以控件左上角坐標(biāo)為基準(zhǔn)示血。