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

    xiaoxiao2025-06-23  7

    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(); } }); } }

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

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

    转载请注明原文地址: https://ju.6miu.com/read-1300246.html
    最新回复(0)