Android 实现底部弹出对话框效果
来源:互联网 发布:java解析epub 书签 编辑:程序博客网 时间:2024/06/04 20:03
本文主要是利用Dialog 实现 从屏幕底部弹出对话框的效果 并且有动画效果。
线上效果图:
首先先在style.xml中定义对话框的样式 如下
<style name="dialog" parent="@android:style/Theme.Dialog"> <item name="android:windowFrame">@null</item><!--边框--> <item name="android:windowIsFloating">true</item><!--是否浮现在activity之上--> <item name="android:windowNoTitle">true</item><!--无标题--> <item name="android:windowContentOverlay">@null</item> <item name="android:backgroundDimEnabled">true</item> <item name="android:windowIsTranslucent">false</item> <item name="android:windowBackground">@color/transparent</item><!--背景透明--> <item name="android:background">@color/transparent</item> <item name="android:backgroundDimAmount">0.5</item> <item name="android:windowAnimationStyle">@style/ActionSheetDialogAnimation</item><!--动画--> </style>
动画样式如下
<style name="ActionSheetDialogAnimation" parent="@android:style/Animation.Dialog"> <item name="android:windowEnterAnimation">@anim/bottom_anim_dialog_in</item> <item name="android:windowExitAnimation">@anim/bottom_anim_dialog_out</item> </style>
bottom_anim_dialog_in.xml
<?xml version="1.0" encoding="utf-8"?><translate xmlns:android="http://schemas.android.com/apk/res/android" android:duration="150" android:fromYDelta="100%" android:toYDelta="0" />
<?xml version="1.0" encoding="utf-8"?><translate xmlns:android="http://schemas.android.com/apk/res/android" android:duration="150" android:fromYDelta="0" android:toYDelta="100%" />
最后在Dialog的构造方法中 使用此样式
super(context, R.style.BottomAnimDialogStyle);
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@drawable/back_bg" android:orientation="vertical"> <TextView android:id="@+id/tv_item1" android:layout_width="match_parent" android:layout_height="@dimen/distance_size_50" android:gravity="center" android:text="换绑银行卡" android:textColor="@color/light_black" android:textSize="@dimen/font_size_16" /> <View android:layout_width="match_parent" android:layout_height="@dimen/distance_size_split_line" android:background="@color/having_line" /> <TextView android:id="@+id/tv_item2" android:layout_width="match_parent" android:layout_height="@dimen/distance_size_50" android:gravity="center" android:text="解绑银行卡" android:textColor="@color/light_red" android:textSize="@dimen/font_size_16" /> </LinearLayout> <TextView android:id="@+id/tv_item3" android:layout_width="match_parent" android:layout_height="@dimen/distance_size_50" android:layout_marginTop="@dimen/distance_size_8" android:background="@drawable/back_bg" android:gravity="center" android:text="取消" android:textColor="@color/light_black" android:textSize="@dimen/font_size_16" /></LinearLayout>
整个dialog的文件代码如下
package com.ppdai.installment.view.dialog;import android.app.Dialog;import android.content.Context;import android.view.Gravity;import android.view.LayoutInflater;import android.view.View;import android.view.Window;import android.view.WindowManager;import android.widget.TextView;import com.ppdai.installment.R;import com.ppdai.installment.utils.DensityUtil;public class BottomAnimDialog extends Dialog { private final Context mContext; private final String mItem1Name; private final String mItem2Name; private final String mItem3Name; private BottonAnimDialogListener mListener; private TextView mTvItem1; private TextView mTvItem2; private TextView mTvItem3; public BottomAnimDialog(Context context, String item1Name, String item2Name, String item3Name) { super(context, R.style.BottomAnimDialogStyle); this.mContext = context; this.mItem1Name = item1Name; this.mItem2Name = item2Name; this.mItem3Name = item3Name; initView(); } private void initView() { LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(mContext.LAYOUT_INFLATER_SERVICE); View view = inflater.inflate(R.layout.bottom_anim_dialog_layout, null); Window window = this.getWindow(); if (window != null) { //设置dialog的布局样式 让其位于底部 window.setGravity(Gravity.BOTTOM); WindowManager.LayoutParams lp = window.getAttributes(); lp.y = DensityUtil.dip2px(mContext,10); //设置居于底部的距离 window.setAttributes(lp); } mTvItem1 = (TextView) view.findViewById(R.id.tv_item1); mTvItem2 = (TextView) view.findViewById(R.id.tv_item2); mTvItem3 = (TextView) view.findViewById(R.id.tv_item3); mTvItem1.setOnClickListener(new clickListener()); mTvItem2.setOnClickListener(new clickListener()); mTvItem3.setOnClickListener(new clickListener()); setContentView(view); setData(); } private void setData() { mTvItem1.setText(mItem1Name); mTvItem2.setText(mItem2Name); mTvItem3.setText(mItem3Name); } public void setItem1TextColor(int colorId) {//设置item的字体颜色 if (mTvItem1 != null) { mTvItem1.setTextColor(colorId); } } public void setItem2TextColor(int colorId) { if (mTvItem2 != null) { mTvItem2.setTextColor(colorId); } } public void setItem3TextColor(int colorId) { if (mTvItem3 != null) { mTvItem3.setTextColor(colorId); } } public void setClickListener(BottonAnimDialogListener listener) { this.mListener = listener; } public interface BottonAnimDialogListener { void onItem1Listener(); void onItem2Listener(); void onItem3Listener(); } private class clickListener implements View.OnClickListener { @Override public void onClick(View v) { switch (v.getId()) { case R.id.tv_item1: if (mListener != null) { mListener.onItem1Listener(); } break; case R.id.tv_item2: if (mListener != null) { mListener.onItem2Listener(); } break; case R.id.tv_item3: if (mListener != null) { mListener.onItem3Listener(); } break; } } }}
最后直接使用:
BottomAnimDialog dialog = new BottomAnimDialog(BankCardManagerActivity.this, "嘻嘻嘻嘻", "哈哈哈哈", "取消"); dialog.setClickListener(new BottomAnimDialog.BottonAnimDialogListener() { @Override public void onItem1Listener() { // TO_DO dialog.dismiss(); } @Override public void onItem2Listener() { // TO_DO dialog.dismiss(); } @Override public void onItem3Listener() { dialog.dismiss(); } }); dialog.show();
就是这么简单 。
1 0
- Android 实现底部弹出对话框效果
- Android安卓用Dialog对话框简单并且完美实现popupWindow底部弹出效果,有动画效果
- Android 底部弹出对话框
- Android DialogFragment实现底部弹出菜单效果
- android自定义底部弹出对话框
- android从底部弹出对话框
- Android 控件——利用Dialog实现底部弹出对话框
- Android 控件——利用Dialog实现底部弹出对话框
- android dialog实现底部弹出和手指滑动隐藏效果
- Android实现底部弹出PopupWindow背景逐渐变暗效果
- 自定义Dialog对话框并实现从底部弹出的动画效果
- Android 对话框弹出底部背景透明度调节
- Android编程:底部弹出的对话框
- Android 实现底部弹出菜单
- android开发游记:弹出窗和底部弹出窗的实现和动画效果
- android开发游记:弹出窗和底部弹出窗的实现和动画效果
- 自定义dialogfragment实现底部弹出框效果
- Android高效率实现弹出带动画效果的对话框,仿照微信对话框效果
- SteamVR Unity工具包(二):激光和移动
- 青岛G,
- Android自定义Dialog大小 自动一屏幕宽度的80%展示
- Java获取客户端IP(解决苹果和安卓版的微信客户端IP问题)
- 第三十七讲项目4.1——大奖赛计分
- Android 实现底部弹出对话框效果
- 冒泡排序
- Two-Stream Convolutional Networks for Action Recognition in Videos
- odroid x/x2 镜像地址 支持的系统
- HDU 5968 异或密码(模拟水题)
- 关于二级指针 二维数组(还没有很懂 持续更新)
- 浙工大15新生赛 数星座
- Linux计划任务
- shell排序