天天看點

自定義PopupWindow和AlertDialog

PopupWindow是一個常用的一個元件,和popwindow相似的元件,還有一個叫AlertDialog

PopupWindow的自定義相信大家一定很熟悉,這裡我展示一下我的相關代碼了,如有不足請指教哦

PopupWindow pop=new PopupWindow(context);
        View contentView = LayoutInflater.from(context).inflate(R.layout.navigationpopup, null);  //擷取popupwindow樣式
        pop.setContentView(contentView);
        pop.setWidth(LayoutParams.MATCH_PARENT);// 設定寬度
        pop.setHeight(LayoutParams.WRAP_CONTENT);//設定高度
        //初始化layout 上面的view
        Button btn=(Button)contentView.findViewById(R.id.btn);
        //添加點選事件--省略
pop.setAnimationStyle(R.style.AnimationFade_bottom);//設定動畫
        pop.setOutsideTouchable(true);//設定outside touch
        pop.getBackground().setAlpha();//設定背景為透明
        pop.showAtLocation(context.findViewById(R.id.ll_web), Gravity.BOTTOM, , );//設定顯示
           

彈出動畫展示給大家:

<style name="AnimationFade_bottom">

        <!-- PopupWindow_bottom上下彈出的效果 -->
        <item name="android:windowEnterAnimation">@anim/in_bottomtotop</item>
        <item name="android:windowExitAnimation">@anim/out_toptobottom</item>
    </style>
           

@anim/in_bottomtotop

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >

    <!-- 定義從上向下進入的動畫 -->
    <translate
        android:duration="200"
        android:fromYDelta="100%"
        android:toYDelta="0" />

</set>
           

@anim/out_toptobottom

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >

    <!-- 定義從下向上進入的動畫 -->
    <translate
        android:duration="200"
        android:fromYDelta="0"
        android:toYDelta="100%" />

</set>
           

自定義的樣式主要看你的layout怎麼寫了

這裡再寫一個自定義的AlertDialog,

這裡我們注意到Layout的作用,當我們自定義Alert 的時候就能夠對于Alert的樣式進行修改,進而達到自定義的目的。

// 取得自定義View    
        LayoutInflater layoutInflater = LayoutInflater.from(this);   
        View myLoginView = layoutInflater.inflate(R.layout.login, null);   

        Dialog alertDialog = new AlertDialog.Builder(this).   
                setTitle("使用者登入").   
                setIcon(R.drawable.ic_launcher).   
                setView(myLoginView).   
                setPositiveButton("登入", new DialogInterface.OnClickListener() {   

                    @Override   
                    public void onClick(DialogInterface dialog, int which) {   
                        // TODO Auto-generated method stub    
                    }   
                }).   
                setNegativeButton("取消", new DialogInterface.OnClickListener() {   

                    @Override   
                    public void onClick(DialogInterface dialog, int which) {   
                        // TODO Auto-generated method stub    
                    }   
                }).   
                create();   
        alertDialog.show();