【android】動畫效果研究(Dialog)【5】


參考文獻:http://blog.csdn.net/lhs286266503/article/details/6996981

http://archive.cnblogs.com/a/2176653/

Dialog不同於view/PopupWindow,如果需要更改Dialog顯示的位置,一般是更新窗口顯示,直接上代碼吧。

與PopupWindow一樣,顯示定義相關的動畫文件:

(1)定義動畫文件

在res/anim文件夾下定義相關的動畫xml文件,可參考【android】動畫效果研究(view)【1】

 

(2)定義style.xml文件

在res/value文件夾下定義style.xml文件,可參考【android】動畫效果研究(PopupWindow)【3】

(3)繼承Dialog,重寫showDialog函數

public class UTDialogAnimation extends Dialog{
    
    private Window window = null;
    
    public UTDialogAnimation(Context context)
    {
        super(context);
    }
    
    public void showDialog(int layoutResID, int x, int y){
        setContentView(layoutResID);
        
        windowDeploy(x, y);
        
        //設置觸摸對話框意外的地方取消對話框
        setCanceledOnTouchOutside(true);
        show();
    } 
    
    //設置窗口顯示
    public void windowDeploy(int x, int y){
        window = getWindow(); //得到對話框
        window.setWindowAnimations(R.style.toast_anim); //設置窗口彈出動畫
        //window.setBackgroundDrawableResource(R.color.vifrification); //設置對話框背景為透明
        WindowManager.LayoutParams wl = window.getAttributes();
        //根據x,y坐標設置窗口需要顯示的位置
        wl.x = x; //x小於0左移,大於0右移
        wl.y = y; //y小於0上移,大於0下移  
//        wl.alpha = 0.6f; //設置透明度
//        wl.gravity = Gravity.BOTTOM; //設置重力
        window.setAttributes(wl);
    }
}

(4)在代碼中new UTDialogAnimation

new UTDialogAnimation(mainActivity.this).showDialog(R.layout.dialog, 80, 50); 

 

     因為某些原因,如果硬件或者底層不支持style,所以以上方法在項目中不可選。另外,Dialog沒有像Popupwindow.update()更新位置的接口,所以像【android】動畫效果研究(view/PopupWindow)【2】 調用java-universal-tween-engine動畫系統庫的方法也沒起作用。迄今為止沒有找到對於Dialog執行動畫效果的另一種方法,如果有高手,麻煩提個意見。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM