dialogandroid動畫
1. Android 詳解自定義簡潔大方的Dialog
在android開發中常常會出現用戶手機系統版本不同,導致默認的彈窗樣式也會不同;或者是系統彈窗跟UI設計的界面風格不搭的現象,這時候就需要我們自定義彈窗風格樣式,才能做到彈窗統一,畫風和諧效果。現在我們就來學習如何自定義Dialog彈窗。
先看看自定義Dialog的效果圖:
可以看到Button按鈕的背景是白色的並帶有圓角,這個效果可以讓UI設計師提供背景圖片,也可以用shape繪制。
1.1在drawable下新建bg_radius_top_white_8.xml文件繪制背景,比如撥打電話的背景:
1.2如果需要統一設置按鈕的寬,高,顏色液高,字體,可以在styles.xml中設置,在dialog_layout.xml布局引用,鬧陪尺如下圖:
2.1在colors.xml中設置顏色:
3.1新建資源文件夾命名為anim,並新建動畫的xml文件:
3.2 彈窗進入時(從底部垂直進入,動畫持續300毫秒),如下亂態圖
3.3 彈窗退出時的布局是dialog_exit.xml(從底部垂直退出到手機屏幕外,動畫持續300毫秒)
3.4同樣在styles.xml設置:
最後在MainActivity中調用一下,就能看到效果了。
完整demo地址: https://github.com/yanhuomatou2015/CustomDialogDemo
今天的分享結束了,再見~
2. 如何自定義Android Dialog的樣式
Android 中自定義Dialog的樣式,主要是通過自定義的xml,然後載入到dialog的背景中,如下步驟:
1、自定義Dialog
java">finalDialogdialog=newDialog(this,R.style.Theme_dialog);
2、窗口布局
ViewcontentView=LayoutInflater.from(this).inflate(R.layout.select_list_dialog,null);
3、把設定好的窗口布局放到dialog中
dialog.setContentView(contentView);
4、設定點擊窗口空白處取消會話
dialog.setCanceledOnTouchOutside(true);
5、具體的操作
ListViewmsgView=(ListView)contentView.findViewById(R.id.listview_flow_list);
6、展示窗口
dialog.show();
例:
finalDialogdialog=newDialog(this,R.style.Theme_dialog);
ViewcontentView=LayoutInflater.from(this).inflate(R.layout.select_list_dialog,null);
dialog.setContentView(contentView);
dialog.setCanceledOnTouchOutside(true);
ListViewmsgView=(ListView)contentView.findViewById(R.id.listview_flow_list);
TextViewtitleText=(TextView)contentView.findViewById(R.id.title);
titleText.setText("請選擇銀行卡");
=(this,mBankcardList);
msgView.setAdapter(adapter);
msgView.setOnItemClickListener(newOnItemClickListener(){
@Override
publicvoidonItemClick(AdapterViewparent,Viewview,intposition,longid){
//Toast.makeText(RechargeFlowToMobileActivity.this,
//position+"",0).show();
mSelectCard=mBankcardList.get(position);
Stringarea=mSelectCard.getBank_card();
mCardNumberText.setText(area);
dialog.dismiss();
}
});
ButtoncloseBtn=(Button)contentView.findViewById(R.id.close);
closeBtn.setClickable(true);
closeBtn.setOnClickListener(newView.OnClickListener(){
@Override
publicvoidonClick(Viewv){
dialog.dismiss();
}
});
dialog.show();
以上就是在Android開發自定義dialog樣式的方法和步驟,android很多的控制項都提供了介面或者方法進行樣式的定義和修改。
3. android 旋轉 dialog會自動旋轉嗎
android源代碼之Rotate旋轉動畫 標簽為旋轉節點 Tween一共為我們提供了3種動畫渲染模式。 android:interpolator="@android:anim/accelerate_interpolator" 設置動畫渲染器為加速動畫(動畫播放中越來越快) android:interpolator="@android:anim/decelerate_interpolator" 設置動畫渲染器為減速動畫(動畫播放中越來越慢) android:interpolator="@android:anim/accelerate_decelerate_interpolator" 設置動畫渲染器為先加速在減速(開始速度最快 逐漸減慢) 如果不寫的話 默認為勻速運動 android:fromDegrees="+360"設置動畫開始的角度 android:toDegrees="0"設置動畫結束的角度 這個動畫布局設置動畫將向左做360度旋轉加速運動。 android:interpolator="@android:anim/accelerate_interpolator" android:fromDegrees="+360" android:toDegrees="0" android:pivotX="50%" android:pivotY="50%" android:ration="2000" /> 復制代碼 代碼實現 import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.view.animation.Animation; import android.view.animation.AnimationUtils; import android.widget.Button; import android.widget.ImageView; public class RotateActivity extends Activity { /**向左旋轉動畫按鈕**/ Button mButton0 = null; /**向右旋轉動畫按鈕**/ Button mButton1 = null; /**顯示動畫的ImageView**/ ImageView mImageView = null; /**向左旋轉動畫**/ Animation mLeftAnimation = null; /**向右旋轉動畫**/ Animation mRightAnimation = null; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.retate); /**拿到ImageView對象**/ mImageView = (ImageView)findViewById(R.id.imageView); /**載入向左與向右旋轉動畫**/ mLeftAnimation = AnimationUtils.loadAnimation(this, R.anim.retateleft); mRightAnimation = AnimationUtils.loadAnimation(this, R.anim.retateright); mButton0 = (Button)findViewById(R.id.button0); mButton0.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { /**播放向左旋轉動畫**/ mImageView.startAnimation(mLeftAnimation); } }); mButton1 = (Button)findViewById(R.id.button1); mButton1.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { /**播放向右旋轉動畫**/ mImageView.startAnimation(mRightAnimation); } }); } }
4. 安卓開發中:把Activity設置為dialog模式後,無法控制消失動畫的問題!
不知道你是怎麼設置的消失動畫,即使設置了Dialog的Theme 他本質上還是Activity的,應該設置Activity切換動畫overridePendingTransition(R.anim.alpha_appear,R.anim.alpha_disappear);
5. android獲取當前頁面的dialog
android獲取當前頁面的dialog的方法。
1、AndroidSupportLibrary23.2里的DesignSupportLibrary新加了一個BottomSheets控制項,一個底部的Dialog表。
2、peekHeight是當BottomSheets關閉的時候,底部下表我們能看到的高度,hideable是當拖拽下拉的時候,bottomsheet是否能全部隱藏。
3、需要監聽BottomSheets回調的狀態,可以通過setBottomSheetCallback來實現,onSlide方法是拖拽中的回調,根據slideOffset可以做一些動畫onStateChanged方法可以監聽到狀態的改變,State總共有5種。
4、實現的思路是通過附加一個BottomSheetBehavior給CoordinatorLayout的子視圖,通過對其behavior的state進行設置更改不同的狀態。
6. Android Dialog動畫效果無效
Window w= dialog.getWindow();
w.setWindowAnimations(R.style.PopupAnimation);
dialog.show();
你的代碼完全沒有問題,莫非和API版本有關?我在API 14上一切正常。