android 自定义弹窗diss,Android中自定义PopupWindow,动态弹窗。
我的第一篇博客,咱們直奔主題。先上個效果圖
在android中自定義PopupWindow:
1、首先定義好你想要顯示的窗口的布局文件,再實例化一個View對象:窗口布局可靈活變化,dialog_layout.xml代碼如下:
android:id="@+id/dialog_layout"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/dialog_bg"
android:orientation="vertical"
android:padding="5dp" >
android:layout_width="fill_parent"
android:layout_height="0dp"
android:text="@string/tip"
android:gravity="center"
android:textSize="21sp"
android:layout_weight="0.7"
android:textColor="#000000"/>
android:id="@+id/horiz"
android:layout_width="fill_parent"
android:layout_height="0.5dp"
android:background="#000000" />
android:layout_width="fill_parent"
android:layout_height="0dp"
android:layout_weight="0.2"
android:orientation="horizontal" >
android:id="@+id/btn_sure"
android:layout_width="0dp"
android:layout_height="fill_parent"
android:background="@drawable/dialog_btn"
android:gravity="center"
android:text="@string/sure"
android:textColor="#000000"
android:layout_weight="1"
android:textSize="20sp" />
android:id="@+id/vertical"
android:layout_width="0.5dp"
android:layout_height="fill_parent"
android:background="#000000" />
android:id="@+id/btn_cancel"
android:layout_width="0dp"
android:layout_height="fill_parent"
android:background="@drawable/dialog_btn"
android:gravity="center"
android:text="@string/cancel"
android:textColor="#000000"
android:layout_weight="1"
android:textSize="20sp" />
當然這個僅供參考,我在布局的時候之所以用了很多?android:layout_weight 屬性,主要是為了在不同分辨率屏幕上有相同的顯示效果。
實例化 View 的代碼如下:
LayoutInflater inflater = LayoutInflater.from(AnimationAlphaActivity.this);
View view = inflater.inflate(R.layout.dialog_layout,(ViewGroup) findViewById(R.id.dialog_layout));
2、接著實例化一個PopupWindow,代碼如下:
DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
popupWindow = new PopupWindow(view, dm.widthPixels/4*3, dm.widthPixels/2);
這里會根據不同屏幕確定對話框的大小。
3、設置動畫效果,首先定義對話框顯示的動畫效果,在 res 文件夾下面新建一個名為 anim 的文件夾(養成良好的習慣),在里面定義對話框顯示時的動畫 dialog_show_anim.xml ,參考代碼如下:
android:duration="200"
android:fromXScale="0.0"
android:fromYScale="0.0"
android:toXScale="1.0"
android:toYScale="1.0"
android:pivotX="50%"
android:pivotY="50%"/>
附加說明:安卓提供的動畫有四種,分別是translate(位移變換),alpha(透明漸變),rotate(旋轉變換),scale(大小變換)。
fromYScale[float] ?為動畫起始時,X、Y坐標上的伸縮尺寸;0.0表示收縮到沒有 ;1.0表示正常無伸縮. 值小于1.0表示收縮. 值大于1.0表示放大toXScale [float];
toYScale[float] ? ?為動畫結束時,X、Y坐標上的伸縮尺寸pivotX[float];
pivotY[float] ? ? ?為動畫相對于物件的X、Y坐標的開始位置屬性值說明:從0%-100%中取值,50%為物件的X或Y方向坐標上的中點位置;
類似的,我們還要定義一個讓對話框消失的動畫,效果跟上面的相反,上面是從 0 的比例放大到 1 的比例。消失則是從1 的比例縮小到 0(消失)。
dialog_dissmiss_anim.xml 代碼如下:
android:duration="200"
android:fromXScale="1.0"
android:fromYScale="1.0"
android:pivotX="50%"
android:pivotY="50%"
android:toXScale="0.0"
android:toYScale="0.0" />
兩個都寫好之后我們要在 value 目錄下的style.xml(沒有的話新建一個)定義對話框的動畫類型,以便于代碼引用,style.xml 參考代碼如下:
4、代碼中調用PopupWindow 的setAnimationStyle 方法即可設定動畫。參考代碼如下:
popupWindow.setAnimationStyle(R.style.dialog_anim);
總結:1、對于PopupWindow 自定義顯示的內容我們可以在實例化 PopupWindow 的時候傳入自己做好的界面布局。
2、對于動畫,我們先定義兩個xml文件分別控制顯示動畫及消失動畫,最后在style.xml文件中將兩個動畫合二為一給代碼調用。
3、對于PopupWindow顯示的位置可以參考PopupWindow的 show** 方法。
轉載請注明出處。
技術因分享而強大。
總結
以上是生活随笔為你收集整理的android 自定义弹窗diss,Android中自定义PopupWindow,动态弹窗。的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C语言bcd码减法过程,bcd码的减法运
- 下一篇: android中按一个按钮弹出字,允许用