Android--對話方塊顯示和退出動畫
阿新 • • 發佈:2018-12-03
效果:對話方塊會從頂部滾到中間顯示,點選取消就會從中間滾到下方退出介面
實現:
1.在res下建立anim資料夾,然後建立兩個Animation resourse file檔案:
dialog_enter.xml:
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"> <!--從上進入到中間--> <translate android:duration="200"android:fromYDelta="-100%"/> </set>
dialog_out.xml:
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"> <!--從中間到底部退出--> <translate android:fromYDelta="0" android:toYDelta="100%" android:duration="200"/> </set>
2.在style.xml檔案裡設定對話方塊的動畫樣式:
<style name="dialog_animation" parent="android:Animation"> <!--進入時的動畫--> <item name="@android:windowEnterAnimation">@anim/dialog_enter</item> <!--退出時的動畫--> <item name="@android:windowExitAnimation">@anim/dialog_out</item> </style>
3.在Activity中建立一個dialog,dialog設定syle樣式:
public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode==KeyEvent.KEYCODE_BACK){ AlertDialog dialog=new AlertDialog.Builder(this) .setTitle("123") .setMessage("dialog顯示和退出動畫") .setPositiveButton("確認", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); } }) .setNegativeButton("取消",null) .create(); dialog.show(); Window window=dialog.getWindow(); window.setGravity(Gravity.CENTER); window.setWindowAnimations(R.style.dialog_animation); } return super.onKeyDown(keyCode, event); } }
執行報下面的錯誤:
Error: style attribute '@android:attr/windowExitAnimation' not found
解決方法:
在gradle.properties中新增 android.enableAapt2=false