android实现好看的自定义提示框
2015-07-22 15:23
537 查看
效果图:
MainActivity.java:
button_msg_submit.xml:
代码部分
main_activity.xml<RelativeLayout 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:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity"> <TextView android:text="@string/hello_world" android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/textView" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="点击弹窗" android:id="@+id/button" android:layout_below="@+id/textView" android:layout_alignParentRight="true" android:layout_alignParentEnd="true" android:layout_marginRight="207dp" android:layout_marginEnd="207dp" android:layout_marginTop="165dp" /> </RelativeLayout>
MainActivity.java:
package com.example.mydialog; import android.app.Activity; import android.os.Message; import android.support.v7.app.ActionBarActivity; import android.os.Bundle; import android.util.Log; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.Button; import android.widget.Toast; import dialog.MessageFragment; public class MainActivity extends ActionBarActivity { //提示框fragment private MessageFragment mMessageFragment; //bundle用来传递提示框的信息 private Bundle bundle; private Button btn; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btn=(Button)findViewById(R.id.button); btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { showdialog(); } }); } private void showdialog() { if (mMessageFragment == null) { mMessageFragment = new MessageFragment(); } if (bundle == null) { bundle = new Bundle(); } bundle.putString("content", "是否确认收件"); bundle.putString("title", "标题"); mMessageFragment.setOnResultListener(new OnItemMsgResultListener()); mMessageFragment.setArguments(bundle); // 显示提示窗口 mMessageFragment.show(getFragmentManager(), ""); } class OnItemMsgResultListener implements MessageFragment.OnMsgResultListener { public OnItemMsgResultListener() { } @Override public void onResultFun(int resultCode) { if (resultCode == Activity.RESULT_OK) { Toast.makeText(MainActivity.this,"确认",Toast.LENGTH_SHORT).show(); // getAliasData(); }else{ Toast.makeText(MainActivity.this,"取消",Toast.LENGTH_SHORT).show(); } } } }
提示框的布局文件:
message_dialog.xml:<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content" > <RelativeLayout android:id="@+id/tv_head" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:background="@mipmap/confirm_head"> <TextView android:id="@+id/tv_title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerVertical="true" android:layout_marginLeft="46.0dp" android:textSize="18sp" android:textColor="#fff" android:text="提示"/> </RelativeLayout> <RelativeLayout android:id="@+id/rlyt_content" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/tv_head" android:background="@mipmap/message_content"> <TextView android:id="@+id/tv_content" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="10dp" android:text="xxxx" android:textColor="#1a1a1a" android:textSize="15sp"/> </RelativeLayout> <RelativeLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/rlyt_content" android:orientation="horizontal"> <Button android:id="@+id/btn_submit" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/button_msg_submit"/> <Button android:id="@+id/btn_cancel" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_toRightOf="@+id/btn_submit" android:background="@drawable/button_msg_cancel"/> <View android:id="@+id/approve_ver_line" android:layout_width="0.5dp" android:layout_height="41.0dp" android:layout_toRightOf="@+id/btn_submit" android:background="@color/divider_gray" /> </RelativeLayout> <View android:id="@+id/message_hor_line" android:layout_width="296.0dp" android:layout_height="0.5dp" android:layout_marginLeft="4.5dp" android:layout_below="@+id/rlyt_content" android:background="@color/divider_gray" /> </RelativeLayout>
drawable下的xml文件:
button_msg_cancel.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="@mipmap/btn_msg_cancel_press" /> <item android:state_enabled="false" android:drawable="@mipmap/btn_msg_cancel_normal" /> <item android:drawable="@mipmap/btn_msg_cancel_normal" /> </selector>
button_msg_submit.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="@mipmap/btn_msg_submit_press" /> <item android:state_enabled="false" android:drawable="@mipmap/btn_msg_submit_normal" /> <item android:drawable="@mipmap/btn_msg_submit_normal" /> </selector>
其他的png图片资源在链接:http://download.csdn.net/detail/u010778159/8923083
最后,
MessageFragment.java:package dialog; import android.app.Activity; import android.app.DialogFragment; import android.graphics.Color; import android.graphics.drawable.ColorDrawable; import android.os.Bundle; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.view.Window; import android.widget.Button; import android.widget.TextView; import com.example.mydialog.R; public class MessageFragment extends DialogFragment { public static final String TAG = "MessageDialog"; private OnMsgResultListener mOnMsgResultListener; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { getDialog().getWindow().requestFeature(Window.FEATURE_NO_TITLE); getDialog().getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); //message_dialog是提示框的布局 View show_view = inflater.inflate(R.layout.message_dialog, null); TextView mTxtContent = (TextView) show_view.findViewById(R.id.tv_content); TextView mTxtTitle = (TextView) show_view.findViewById(R.id.tv_title); Button btnSubmit = (Button) show_view.findViewById(R.id.btn_submit); Button btnCancel = (Button) show_view.findViewById(R.id.btn_cancel); Bundle bundle = this.getArguments(); if(bundle != null){ String title = bundle.getString("title"); if(title!=null){ mTxtTitle.setText(bundle.getString("title")); } mTxtContent.setText(bundle.getString("content")); } btnSubmit.setOnClickListener(btnClickListener); btnCancel.setOnClickListener(btnClickListener); setCancelable(false); return show_view; } public void setOnResultListener(OnMsgResultListener listener) { mOnMsgResultListener = listener; } View.OnClickListener btnClickListener = new View.OnClickListener() { @Override public void onClick(View v) { switch (v.getId()) { case R.id.btn_submit: mOnMsgResultListener.onResultFun(Activity.RESULT_OK); dismiss(); break; case R.id.btn_cancel: mOnMsgResultListener.onResultFun(Activity.RESULT_CANCELED); dismiss(); break; default: break; } } }; public interface OnMsgResultListener { void onResultFun(int resultCode); } }
相关文章推荐
- Android 客户端Cookie失效的问题
- Android百分比布局支持库介绍——com.android.support:percent(转)
- Android 自定义雷达图
- android官方技术文档翻译——设计时布局属性
- Android ViewTreeObserver的常用技巧
- Android ViewTreeObserver的常用技巧
- 解决android模块化升级方法
- android的几种启动模式介绍
- 如何自学 Android 编程?
- Android Studio使用简介
- Android Studio使用简介 分类: Android 2015-07-22 14:57 71人阅读 评论(0) 收藏
- android的Thread、Runnable、Asyntask的区别与联系
- Android手机怎么获取打印机的IP地址呢
- Android中Java和JS双向调用
- Android环境搭建
- 关于android下SurfaceView后台录视频牌拍照的思路
- Android Studio使用技巧系列教程(六)
- Android Studio使用技巧系列教程(五)
- Android笔记:代码规范(新浪微博sdk示例工程附带的说明)
- Android Studio使用技巧系列教程(四)