UI系列__下拉提示Dialog

    自定義一個CustomTopDialog繼承Dialog

public class CustomTopDialog extends Dialog{

	@SuppressWarnings("deprecation")
	public CustomTopDialog(Activity context) {
		super(context,R.style.new_dialog);
		setContentView(R.layout.view_top_dialog);
		Window dialogWindow = getWindow();
		WindowManager.LayoutParams lp = dialogWindow.getAttributes();
		/*
		 * 將對話框的大小按屏幕大小的百分比設置
		 */
		WindowManager m = context.getWindowManager();
		Display d = m.getDefaultDisplay(); // 獲取屏幕寬、高用
		lp.width=d.getWidth();//不懂=_=   
		dialogWindow.setGravity(Gravity.LEFT | Gravity.TOP);
		dialogWindow.setAttributes(lp);
		dialogWindow.setWindowAnimations(R.style.dialogWindowAnim);//調用動畫 
	}
   //設置Message文字
	public CustomTopDialog setMessage(String msg) {
		setTipsetVisibility(View.GONE);
		setValue(R.id.msg,msg);
		return this;

	}
    
	public void show(final int time) {
		show();
		new AsyncTask<Object, Object, Object>() {

			@Override
			protected Object doInBackground(Object... params) {
				try {
					Thread.sleep(time);//不懂這個有什麼用處?
				} catch (InterruptedException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
				return null;
			}

			protected void onPostExecute(Object result) {
				dismiss();
			};
		}.execute();
	}
    //設置Tip是否可見
	public void setTipsetVisibility(int visibility) {
		findViewById(R.id.tip).setVisibility(visibility);
	}
    //設置Tip文字
	public CustomTopDialog setTip(String tip) {
		setTipsetVisibility(View.VISIBLE);
		setValue(R.id.tip,tip);
		return this;
	}

    //設置TextView的文字
	void setValue(int id,String value){
		((TextView)findViewById(id)).setText(value);
	}
}

Dialog的xml

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#FFFFFF"
        android:orientation="vertical"
        android:padding="20dp" >

        <TextView
            android:id="@+id/msg"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center_horizontal"
            android:textColor="@color/black"
            android:textSize="18sp" />

        <TextView
            android:id="@+id/tip"
            style="@style/activity_main_label"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="10dp"
            android:visibility="gone" />
    </LinearLayout>

調用到的Style 

<resources>
     <!-- dialog樣式 -->
    </style>
       <style name="new_dialog" parent="@android:style/Theme.Dialog">
        <item name="android:windowFrame">@null</item>
        <!-- 邊框 -->
        <item name="android:windowIsFloating">true</item>
        <!-- 是否懸浮在activity上 -->
        <item name="android:windowIsTranslucent">false</item>
        <!-- 半透明 -->
        <item name="android:windowNoTitle">true</item>
        <!-- 無標題 -->
        <item name="android:windowBackground">@android:color/transparent</item>
        <!-- 背景透明 -->
        <item name="android:backgroundDimEnabled">true</item>
        <!-- 模糊 -->
        <item name="android:backgroundDimAmount">0.5</item>
        <!-- 灰度 -->
        <item name="android:windowContentOverlay">@null</item>
        <!-- 對話框是否有遮蓋 -->
        <item name="android:colorBackgroundCacheHint">@null</item>
    </style>
     <!-- dialog動畫 -->
    <style name="dialogWindowAnim" parent="@android:style/Animation">
        <item name="android:windowEnterAnimation">@anim/dialog_enter_anim</item>
        <item name="android:windowExitAnimation">@anim/dialog_exit_anim</item>
    </style>
     <!-- Tip 樣式 -->
    <style name="activity_main_label" parent="android:Widget.TextView">
        <item name="android:drawablePadding">5dp</item>
        <item name="android:gravity">center_vertical</item>
        <item name="android:textColor">#999999</item>
        <item name="android:textSize">14sp</item>
    </style>
</resources>

    Dialog的動畫

      dialog_enter_anim.xml

<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate android:fromYDelta="-100%"
        android:toYDelta="0"
        android:duration="200"/>
</set>

       dialog_exit_anim.xml

<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate android:fromYDelta="0"
        android:toYDelta="-100%"
        android:duration="100"/>
</set>
     

     截圖




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章