Android 仿QQ消息提示,相册选择对话框

来源:互联网 发布:阿里云幕布怎么申请 编辑:程序博客网 时间:2024/06/02 04:42

Android 仿QQ消息提示,相册选择对话框

好久没写博客了,也是因为最近实在是太忙了,从我入职到现在,一直都是在加班。。。苦逼的生活。
因公司要求和IOS统一对话框(万恶的pm,什么都要和ios一样),所以就有了本文的对话框,二话不说,先来张效果图(没效果图的博客看着真蛋疼)。
这里写图片描述

先看看消息提示对话框布局文件:
dialog_message.xml

<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent">    <LinearLayout        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:layout_centerInParent="true"        android:orientation="vertical"        android:paddingLeft="25dp"        android:paddingRight="25dp" >        <LinearLayout            android:layout_width="match_parent"            android:layout_height="wrap_content"            android:background="@drawable/rounded_trans_white_top"            android:orientation="vertical"            android:paddingBottom="25dp"            android:paddingLeft="15dp"            android:paddingRight="15dp"            android:paddingTop="25dp" >            <TextView                android:layout_width="match_parent"                android:layout_height="wrap_content"                android:gravity="center"                android:paddingBottom="17dp"                android:singleLine="true"                android:text="@string/message"                android:textColor="@android:color/black"                android:textSize="20sp"                android:textStyle="bold" />            <TextView                android:id="@+id/tv_message"                android:layout_width="match_parent"                android:layout_height="wrap_content"                android:gravity="center"                android:text=""                android:textColor="@android:color/black"                android:textSize="17sp" />        </LinearLayout>        <View            android:layout_width="match_parent"            android:layout_height="0.5dp"            android:background="@color/dialog_line" />        <RelativeLayout            android:layout_width="match_parent"            android:layout_height="45dp" >            <View                android:id="@+id/v_center_line"                android:layout_width="0.5dp"                android:layout_height="match_parent"                android:layout_centerInParent="true"                android:background="@color/dialog_line" />            <Button                android:id="@+id/btn_cancel"                android:layout_width="match_parent"                android:layout_height="match_parent"                android:layout_alignParentLeft="true"                android:layout_toLeftOf="@id/v_center_line"                android:background="@drawable/dialog_bottom_left_selector"                android:text="@string/cancel"                android:textColor="@color/common_text"                android:textSize="17sp" />            <Button                android:id="@+id/btn_ok"                android:layout_width="match_parent"                android:layout_height="match_parent"                android:layout_alignParentRight="true"                android:layout_toRightOf="@id/v_center_line"                android:background="@drawable/dialog_bottom_right_selector"                android:text="@string/ok"                android:textColor="@color/common_text"                android:textSize="17sp" />        </RelativeLayout>    </LinearLayout></RelativeLayout>

消息提示对话框java代码:
MessageDialog.java

public class MessageDialog extends Dialog implements View.OnClickListener {    private final TextView tv_message;    private final Button btn_cancel;    private final Button btn_ok;    private MessageCallBack callBack;    public MessageDialog(Context context) {        super(context, R.style.DialogCenterTheme);        setContentView(R.layout.dialog_message);        tv_message = (TextView) findViewById(R.id.tv_message);        btn_cancel = (Button) findViewById(R.id.btn_cancel);        btn_ok = (Button) findViewById(R.id.btn_ok);        btn_cancel.setOnClickListener(this);        btn_ok.setOnClickListener(this);    }    public void show(MessageCallBack callBack) {        this.callBack = callBack;        super.show();    }    @Override    public void show() {    }    //确认、取消回调    public interface MessageCallBack {        void onOkClick();        void onCancelClick();    }    //消费了此次事件    @Override    public boolean onTouchEvent(MotionEvent event) {        cancel();        return true;    }    @Override    public void onClick(View v) {        switch (v.getId()){            case R.id.btn_cancel:                callBack.onCancelClick();                cancel();                break;            case R.id.btn_ok:                callBack.onOkClick();                cancel();                break;        }    }}

相册选择对话框布局文件:
dialog_picture_picker.xml

<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent" >    <LinearLayout        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:layout_alignParentBottom="true"        android:orientation="vertical"        android:paddingLeft="10dp"        android:paddingRight="10dp" >        <LinearLayout            android:layout_width="match_parent"            android:layout_height="wrap_content"            android:orientation="vertical" >            <Button                android:id="@+id/btn_photograph"                android:layout_width="match_parent"                android:layout_height="45dp"                android:background="@drawable/dialog_top_selector"                android:text="@string/photograph"                android:textColor="@color/common_text"                android:textSize="17sp" />            <View                android:layout_width="match_parent"                android:layout_height="0.5dp"                android:background="@color/dialog_line" />            <Button                android:id="@+id/btn_from_album"                android:layout_width="match_parent"                android:layout_height="45dp"                android:background="@drawable/dialog_bottom_selector"                android:text="@string/select_from_album"                android:textColor="@color/common_text"                android:textSize="17sp" />        </LinearLayout>        <LinearLayout            android:layout_width="match_parent"            android:layout_height="wrap_content"            android:layout_marginTop="8dp"            android:layout_marginBottom="8dp"            android:orientation="vertical" >            <Button                android:id="@+id/btn_cancel"                android:layout_width="match_parent"                android:layout_height="45dp"                android:background="@drawable/dialog_cancel_selector"                android:text="@string/cancel"                android:textColor="@color/common_blue"                android:textSize="17sp" />        </LinearLayout>    </LinearLayout></RelativeLayout>

相册选择对话框java代码:
PicturePickerDialog.java

public class PicturePickerDialog extends Dialog implements View.OnClickListener {    private final Button btn_photograph;    private final Button btn_from_album;    private final Button btn_cancel;    private PicturePickerCallBack callBack;    public PicturePickerDialog(Context context) {        super(context, R.style.DialogBottomTheme);        setContentView(R.layout.dialog_picture_picker);        btn_photograph = (Button) findViewById(R.id.btn_photograph);        btn_from_album = (Button) findViewById(R.id.btn_from_album);        btn_cancel = (Button) findViewById(R.id.btn_cancel);        btn_photograph.setOnClickListener(this);        btn_from_album.setOnClickListener(this);        btn_cancel.setOnClickListener(this);    }    public void show(PicturePickerCallBack callBack){        this.callBack = callBack;        super.show();    }    @Override    public void show() {    }    @Override    public boolean onTouchEvent(MotionEvent event) {        cancel();        return true;    }    public interface PicturePickerCallBack {        void onPhotoClick();        void onAlbumClick();    }    @Override    public void onClick(View v) {        switch (v.getId()){            case R.id.btn_photograph:                callBack.onPhotoClick();                cancel();                break;            case R.id.btn_from_album:                callBack.onAlbumClick();                cancel();                break;            case R.id.btn_cancel:                cancel();                break;        }    }}

MainActivity布局文件:

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:paddingBottom="@dimen/activity_vertical_margin"    android:paddingLeft="@dimen/activity_horizontal_margin"    android:background="#22cccccc"    android:paddingRight="@dimen/activity_horizontal_margin"    android:orientation="vertical"    android:paddingTop="@dimen/activity_vertical_margin"    tools:context="com.mumu.dialog.MainActivity">    <Button        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:onClick="showDialog"        android:text="消息对话框" />    <Button        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:onClick="showPicturePicker"        android:text="相册选择对话框" /></LinearLayout>

调用:

public class MainActivity extends AppCompatActivity {    private Context mContext;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        mContext = this;    }    public void showDialog(View view){        MessageDialog messageDialog = new MessageDialog(this);        messageDialog.show(new MessageDialog.MessageCallBack() {            @Override            public void onOkClick() {                Toast.makeText(mContext,"确 定",Toast.LENGTH_SHORT).show();            }            @Override            public void onCancelClick() {                Toast.makeText(mContext,"取 消",Toast.LENGTH_SHORT).show();            }        });    }    public void showPicturePicker(View view){        PicturePickerDialog picturePickerDialog = new PicturePickerDialog(this);        picturePickerDialog.show(new PicturePickerDialog.PicturePickerCallBack() {            @Override            public void onPhotoClick() {                Toast.makeText(mContext,"拍 照",Toast.LENGTH_SHORT).show();            }            @Override            public void onAlbumClick() {                Toast.makeText(mContext,"相册选择",Toast.LENGTH_SHORT).show();            }        });    }}

CSDN下载地址:
http://download.csdn.net/detail/u013653230/9603210

github:
https://github.com/diycoder/Dialog

1 0