android Dialog 自定義及彈出動畫

自定義

private void showMiddleDialog() {
    final AlertDialog dialog = new AlertDialog.Builder(AdsScanActivity.this).show();
    Window window = dialog.getWindow();
    window.setWindowAnimations(R.style.dialogWindowAnim);//設置動畫類型
    window.setContentView(R.layout.ads_msg_dialog_layout);//加載自定義佈局
    TextView title = (TextView) window.findViewById(R.id.title);
    TextView message = (TextView) window.findViewById(R.id.message);
    Button cancel = (Button) window.findViewById(R.id.cancel);
    Button ok = (Button) window.findViewById(R.id.btn_ok);

    title.setText(R.string.ads_server_dialog_title);
    message.setText(R.string.ads_server_dialog_msg);
    ok.setText(R.string.ads_server_open);
    cancel.setText(R.string.ads_server_cancel);

    ok.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            dialog.dismiss();
            //TODO something here
        }
    });
    cancel.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            dialog.dismiss();
        }
    });
}

res/layout/ads_msg_dialog_layout.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:background="#F5F5F5" >

    <TextView
        android:id="@+id/title"
        android:layout_width="match_parent"
        android:layout_height="45dp"
        android:paddingLeft="20dp"
        android:paddingTop="5dp"
        android:paddingBottom="15dp"
        android:gravity="center_vertical"
        android:textSize="@dimen/common_title_size"
        android:textColor="@color/white"
        android:background="#3F52B4"/>

    <TextView
        android:id="@+id/message"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center_vertical"
        android:paddingTop="10dp"
        android:paddingBottom="10dp"
        android:paddingLeft="20dp"
        android:paddingRight="20dp"
        android:textSize="@dimen/common_middle_text_size" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:paddingBottom="10dp"
        android:gravity="center_horizontal" >
        <Button
            android:id="@+id/cancel"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="@dimen/btn_margin_left"
            android:background="@drawable/botom_button_selector"
            android:text="@string/cancel"
            android:textColor="@color/black"
            android:textSize="@dimen/common_middle_text_size" />
        <Button
            android:id="@+id/btn_ok"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="@dimen/btn_margin_left"
            android:layout_marginRight="@dimen/btn_margin_left"
            android:background="@drawable/botom_button_selector"
            android:text="@string/ok"
            android:textColor="@color/battery_bt_ok"
            android:textSize="@dimen/common_middle_text_size" />
    </LinearLayout>
</LinearLayout>
res/values/dimens.xml

<resources>
    <dimen name="btn_margin_left">14dp</dimen>
    <dimen name="common_title_size">17sp</dimen>
    <dimen name="common_middle_text_size">16sp</dimen>
</resources>
res/values/colors.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="white">#ffffff</color>
    <color name="black">#000000</color>
    <color name="battery_bt_ok">#4AD134</color>
</resources>
res/drawable/botom_button_selector.xml

<?xml version="1.0" encoding="UTF-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_focused="true" android:drawable="@drawable/bt_white"></item>
    <item android:state_pressed="true" android:drawable="@drawable/bt_white_press"></item>
    <item android:drawable="@drawable/bt_white"></item>
</selector>


彈出動畫

res/values/styles.xml

<resources xmlns:android="http://schemas.android.com/apk/res/android">
    <style name="dialogWindowAnim" parent="android:Animation">
        <item name="android:windowEnterAnimation">@anim/dialog_enter_anim</item>
        <item name="android:windowExitAnimation">@anim/dialog_exit_anim</item>
    </style>
</resources>
res/anim/dialog_enter_anim.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate
        android:fromYDelta="100%p"
        android:duration="200"/>
</set>
res/anim/dialog_exit_anim.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate
        android:toYDelta="100%p"
        android:duration="200"/>
</set>


其他效果

<translate />    位移

<alpha />         透明度

<rotate />         旋轉

<scale />          縮放

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