android DecorView的使用
生活随笔
收集整理的這篇文章主要介紹了
android DecorView的使用
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
今天,簡單講講android 中的
DecorView的使用。
getWindow().getDecorView()的方法可以獲取到decorView,decorView是什么呢?
decorView是window中的最頂層view,可以從window中獲取到decorView,然后decorView有個getWindowVisibleDisplayFrame方法可以獲取到程序顯示的區域,包括標題欄,但不包括狀態欄。
接下來舉一個具體的例子:
先來看看實現的效果
實現的大致思路
[下面大量 代碼 ]
第一個對話框的實現
public class TipsDialog {private Activity activity;private View rootView;private TextView confirmTextView;private TextView cancelTextView;private TextView contentTextView;private boolean isShowing;public TipsDialog(Activity activity) {this.activity = activity;isShowing = false;rootView = LayoutInflater.from(activity).inflate(R.layout.view_tips_dialog,null);confirmTextView = (TextView) rootView.findViewById(R.id.view_tips_dialog_tv_confirm);cancelTextView = (TextView) rootView.findViewById(R.id.view_tips_dialog_tv_cancel);contentTextView = (TextView) rootView.findViewById(R.id.view_tips_dialog_tv_content);}public void show(){if(activity == null){return;}if(isShowing){return;}ViewGroup decorView = (ViewGroup) activity.getWindow().getDecorView();FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);params.gravity = Gravity.CENTER;rootView.setLayoutParams(params);decorView.addView(rootView);rootView.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {dismiss();}});RotateAnimation rotateAnimation = new RotateAnimation(0,720f,RotateAnimation.RELATIVE_TO_SELF,0.5f,RotateAnimation.RELATIVE_TO_SELF,0.5f);rotateAnimation.setDuration(2000);contentTextView.startAnimation(rotateAnimation);isShowing = true;}public void dismiss(){if(!isShowing){return;}isShowing = false;if(rootView.getParent() == null){return;}ViewGroup parent = (ViewGroup) rootView.getParent();parent.removeView(rootView);}public int getRandomColor(){Random random = new Random();return Color.argb(random.nextInt(200),random.nextInt(240),random.nextInt(240),random.nextInt(240));}public boolean isShowing() {return isShowing;} }
其實就是show的時候將布局添加到DecorView上面去,dismiss的時候將布局從DecorView上面移除
提示的實現(沒有處理完善~~ 僅僅就是說明哈DecorView)
public class TopTipDialog {private Activity activity;private View rootView;private boolean isShowing;private static final int VIEW_HEIGHT = 64;//pxpublic TopTipDialog(Activity activity) {this.activity = activity;rootView = LayoutInflater.from(activity).inflate(R.layout.view_top_tip_dialog,null);}public void show(){if(isShowing){return;}ViewGroup decorView = (ViewGroup) activity.getWindow().getDecorView();FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, VIEW_HEIGHT);params.gravity = Gravity.TOP;params.setMargins(0,0,0,-VIEW_HEIGHT);rootView.setLayoutParams(params);TranslateAnimation translateAnimation = new TranslateAnimation(0,0,-VIEW_HEIGHT,0);translateAnimation.setDuration(1500);translateAnimation.setFillAfter(true);decorView.addView(rootView);rootView.startAnimation(translateAnimation);rootView.postDelayed(new Runnable() {@Overridepublic void run() {TranslateAnimation translateAnimation1 = new TranslateAnimation(0,0,0,-VIEW_HEIGHT);translateAnimation1.setDuration(1500);translateAnimation1.setFillAfter(true);rootView.startAnimation(translateAnimation1);}},3000);} }
android DecorView的使用就講完了。
就這么簡單。
總結
以上是生活随笔為你收集整理的android DecorView的使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android Math的使用
- 下一篇: android listView的set