zoukankan      html  css  js  c++  java
  • Android 开发之自定义Dialog及UI的实现

    我们在开发中,经常会自定义Dialog,因为原生的AlertDialog无法满足我们的需求,这个时候就需要自定义Dialog,那么如何自定义呢,其实不难,就是有点繁琐而已。也就是自定义一个UI的xml文件,然后用setContentView方法来自定义设置。最近开发做了个小例子,特此分享记录出来给大家。

    Dialog效果如下:

    创建对话框类实现如下:

    import android.app.Dialog;
    import android.content.Context;
    import android.util.DisplayMetrics;
    import android.view.Gravity;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.Window;
    import android.view.WindowManager;
    import android.view.View.OnClickListener;
    import android.widget.ImageView;
    import android.widget.TextView;
    
    
    public class DialogUitl {
        
        private static Dialog watchMovieDialog;
        public static Dialog showWatchMovieDialog(Context context) {
            if(watchMovieDialog == null){
                watchMovieDialog = new Dialog(context, R.style.watchMovieDialog);
                View dialogView = LayoutInflater.from(context).inflate(R.layout.dialog_watch_movie, null);
                watchMovieDialog.setCanceledOnTouchOutside(false);
                watchMovieDialog.setContentView(dialogView);
                Window dialogWindow = watchMovieDialog.getWindow();
                WindowManager.LayoutParams lp = dialogWindow.getAttributes();
                dialogWindow.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);
                DisplayMetrics metrics = context.getApplicationContext().getResources().getDisplayMetrics();
                lp.width = metrics.widthPixels * 5 / 6;  
                lp.height = metrics.heightPixels *  4/5; 
                dialogWindow.setAttributes(lp);
                dialogWindow.setBackgroundDrawable(context.getResources().getDrawable(R.drawable.dlg_movie_bg));
                //dialogWindow.setBackgroundDrawableResource(R.drawable.dlg_movie_bg);
                watchMovieDialog.setCancelable(true);
                
                String title = "金玉良缘[高清版]";
                String score = "9.0分";
                String director = "黄祖权";
                String actor = "霍建华,唐嫣等";
                int   imageId = R.drawable.movie_img;
                String duration = "45集";
                String introduce = "    故事发生在明朝永乐年间。江阁老爱女江晓萱(贡米 饰)违太后旨意,不愿与金府公子金元宝(霍建华 饰)成婚,在大婚之际出逃,侠女玉麒麟(唐嫣 饰)为调查。";
                
                ((TextView)dialogView.findViewById(R.id.title)).setText(title);
                ((TextView)dialogView.findViewById(R.id.score)).setText(score);
                ((TextView)dialogView.findViewById(R.id.redirectContent)).setText(director);
                ((TextView)dialogView.findViewById(R.id.roleContent)).setText(actor);
                ((TextView)dialogView.findViewById(R.id.duration)).setText(duration);
                ((TextView)dialogView.findViewById(R.id.introduce)).setText(introduce);
                
                ((ImageView)dialogView.findViewById(R.id.ivImage)).setImageResource(imageId);
                
            }
            return watchMovieDialog;
        }
        
    }

    对应的UI的xml文件实现如下:

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/dialog"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical" 
        
        >
        <RelativeLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_margin="10dip"
             >
            <TextView
                android:id="@+id/title"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentLeft="true"
                android:layout_alignParentTop="true"
                android:textSize="18sp"
                android:text="" />
            <TextView
                android:id="@+id/score"
                
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentRight="true"
                android:layout_alignParentTop="true"
                android:textColor="@color/color_bebebe"
                android:textSize="18sp"
                android:text="" />
        </RelativeLayout>
        <ImageView 
            android:id="@+id/ivImage"
            android:layout_marginLeft="10dip"
            android:layout_marginRight="10dip"
            android:layout_marginBottom="10dip"
            android:layout_width="fill_parent"
            android:layout_height="180dp"
            android:src="@drawable/movie_img" />
        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_marginLeft="10dip"
            android:layout_marginRight="10dip"
            android:layout_marginBottom="10dip"
            android:orientation="vertical"
            android:background="@color/white"
             >
            <LinearLayout
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:orientation="horizontal"
                android:layout_marginBottom="10dip" >
    
                <TextView
                    android:id="@+id/role"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="主演:"
                     android:textColor="@color/color_959595"
                    android:textSize="12sp" />
    
                <TextView
                    android:id="@+id/roleContent"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text=""
                     android:textColor="@color/color_959595"
                    android:textSize="12sp" />
    
            </LinearLayout>
            <LinearLayout
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:orientation="horizontal" >
                
                <TextView
                    android:id="@+id/redirect"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:singleLine="true"
                    android:text="导演:"
                    android:textColor="@color/color_959595"
                    android:textSize="12sp" />
    
                <TextView
                    android:id="@+id/redirectContent"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:singleLine="false"
                    android:text=""
                    android:textColor="@color/color_959595"
                    android:textSize="12sp" />
                <TextView
                    android:id="@+id/redirect"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:singleLine="true"
                    android:text="  时长:"
                    android:textColor="@color/color_959595"
                    android:textSize="12sp" />
    
                <TextView
                    android:id="@+id/duration"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:singleLine="false"
                    android:text=""
                    android:textColor="@color/color_959595"
                    android:textSize="12sp" />
    
            </LinearLayout>
        </LinearLayout>
        <TextView
                    android:id="@+id/introduce"
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginLeft="10dip"
                    android:layout_marginRight="10dip"
                    android:layout_marginBottom="10dip"
                    android:singleLine="false"
                    android:text=""
                    android:textColor="@color/color_959595"
                    android:lineSpacingExtra="3dp"
                    android:textSize="12sp" />
    
        <LinearLayout
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_marginLeft="10dip"
                android:layout_marginRight="10dip"
                android:layout_marginBottom="10dip"
                android:gravity="center"
                android:orientation="horizontal" 
                >
                    <TextView
                        android:id="@+id/playing"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_weight="1"
                        android:layout_gravity="center"                    
                        android:background="@drawable/btn_install_selector"
                        android:gravity="center"
                        android:text="开始播放" 
                        android:textColor="@color/white"
                        android:textSize="16sp"
                        android:clickable="true"/>
    
    
            </LinearLayout>
        
    
    </LinearLayout>

    对话框底部的绿色Button的Style 实现(btn_install_selector.xml):

    <?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
        <item android:state_pressed="true" android:drawable="@drawable/btn_install_bg"/>
        <item android:state_enabled="false" android:drawable="@drawable/btn_sending_bg"/>
        <item android:drawable="@drawable/btn_install_normall"/>
    </selector>

    最后调用Dialog方法如下:

    在你需要弹出对话框的地方 调用以下代码即可:

    DialogUitl.showWatchMovieDialog(this).show();
  • 相关阅读:
    javaScirpt学习之事件
    验证表单内容之后如何阻止表单提交
    利用js制作异步验证ajax方法()
    Ajax制作无刷新评论系统
    ajax查询数据的举例
    以Ajax的方式访问数据库
    jquery中的全局事件
    jquery序列化元素
    jquery中的ajax
    jquery与ajax的应用
  • 原文地址:https://www.cnblogs.com/JczmDeveloper/p/3741258.html
Copyright © 2011-2022 走看看