題外話:
如何把1個 “小view” 或 “小fragment” 覆蓋到1個 “全屏view” 之上(見下圖)。
方法1(FrameLayout + layout_marginTop ):
<FrameLayout android:layout_width= "match_parent" android:layout_height= "match_parent" > <fragment android:layout_marginTop= "10dp" android:layout_width= "match_parent" android:layout_height= "wrap_content" /> </FrameLayout> |
方法2(RelativeLayout + layout_alignParentBottom):
<RelativeLayout android:layout_width= "match_parent" android:layout_height= "match_parent" > <fragment android:layout_alignParentBottom= "true" android:layout_width= "match_parent" android:layout_height= "wrap_content" /> </RelativeLayout> |
開始正題,首先說1下為何用Fragment而不用ViewGroup,我覺得Fragment是1個小的履行單元,它既有Actvity處理事件的能力又有ViewGroup inflate 局部顯示的功能,避免把1堆業務上不相干的控件和事件處理都寫在1個Actvity里面,ViewGroup不包括任何事件處理也方便其他地方共用。
先說1下需求,由界面A 過渡到界面B,上面藍色的區域不動,FragmentA 自上而下逐步消失,FragmentB自下而上逐步顯示,(就是做了1個translationY動畫)。
百度谷歌了“Fragment 切換動畫”,發現都是setCustomAnimations來做的,這個動畫要求必須是objectAnimator (屬性動畫)
Fragment
fragment = Fragment.instantiate(context, fragmentName, fragmentArgs); FragmentTransaction
transaction = ((Activity) context).getFragmentManager().beginTransaction(); fragment.setArguments(fragmentArgs); transaction.setCustomAnimations(R.anim.expand_to_top,
R.anim.collapse_from_top); transaction.replace(R.id.network_diagnostics_status_zone,
fragment).commit(); //切換 |
<?xml
version= "1.0" encoding= "utf⑻" ?> <set> <objectAnimator xmlns:android= "<a
href="http://schemas.android.com/apk/res/android" "="" style="color: rgb(50, 108, 166); text-decoration: none; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius:
0px !important; background-image: none !important; border: 0px !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding:
0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; min-height: inherit !important;">http://schemas.android.com/apk/res/android" android:duration= "600"
生活不易,碼農辛苦
------分隔線----------------------------
上一篇 Android實習札記(10)---ImageView的src屬性 VS blackground屬性 下一篇 CSS高效開發實戰:CSS 3、LESS、SASS、Bootstrap、Foundation --讀書筆記(1)設定背景圖 分享到:
------分隔線----------------------------
|