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
- Android 仿QQ消息提示,相册选择对话框
- Android仿qq从相册选择照片
- android 仿QQ相册
- 从仿QQ消息提示框来谈弹出式对话框
- 仿QQ弹出消息提示
- Android 仿QQ、新浪相册的实现
- Android 仿QQ消息界面
- javascript仿QQ右下角提示消息
- java 仿qq消息提示框
- wpf实现仿qq消息提示框
- 微仿QQ消息提示点拖拽功能
- Android自定义对话框仿QQ退出
- Android UI设计: 分享一个仿QQ聊天消息提示可以拖拉气泡
- Android UI设计: 分享一个仿QQ聊天消息提示可以拖拉气泡
- 仿QQ的头像选择弹出的对话框
- Android仿QQ消息导航UI
- android仿qq聊天界面版带表情、相册、照相
- 【Android】高仿QQ对话框之自定义对话框CustomDialog
- VS+Qt开发环境搭建
- 冒牌排序算法详解
- IOC 与 AOP
- B/S模式的底层socket通讯练习
- 计算n代兔子数
- Android 仿QQ消息提示,相册选择对话框
- MySocket服务器与客户端的相互响应
- Android开源项目之android-menudrawer示例演示
- linux make menuconfig 执行流程小结
- J2SE小结
- 解决使用VMware克隆出来的新虚拟机无法联网的问题
- js-dom操作的属性及方法
- gulp和bower工具的环境搭建以及使用介绍
- C和C++中全局变量,局部变量,静态变量和常量