分享用Activity的做Dialog样式
Dialog是我们项目中经常会用到的工具,实现它的方式也多种多样,有时为了需要我们会把Activity展示成Dialog,今天就讲一下如何用Activity写Dialog.
主要有以下几点:
- AndroidManifest设置activity的主题
- activity布局的设置
- activity.class的设置
android:theme=”@style/MyDialogStyle”
name="MyDialogStyle" parent="Theme.AppCompat.NoActionBar">- @null
- true
- false
- true
- true
- @null
- @color/line_black_tran_50
- true
- false
- @style/AnimSlideBottom
activity布局的设置
我们分享的需求就是展示, 没有就隐藏,只做了微博,微信,朋友圈,QQ分享.
【分享用Activity的做Dialog样式】等会我再说为什么添加一个View->”view_virtualHeight”.
activity.class的设置
当点击这个页面时dialog就消失
@Override public boolean onTouchEvent(MotionEvent event) {
this.finish();
return super.onTouchEvent(event);
}
现在全面屏比较流行,但是此时虚拟按键会遮盖一部分布局,所以在activity初始化的时候判断是否有虚拟按键,根据测量的虚拟按键的高度设置View->”view_virtualHeight”.这样,虚拟按键就遮盖的是view_virtualHeight,就相当于给虚拟按键添加了一个背景色.
// 设置分享弹窗位置和宽高以及显示隐藏动画
getWindow().setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
getWindow().setGravity(Gravity.BOTTOM);
// 虚拟按键显示隐藏更改布局距离底部距离
getWindow().getDecorView().getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {@Override public void onGlobalLayout() {
int height = virtualHeight;
virtualHeight = CommonUtils.getVirtualKeyboardHeight(ShareWbActivity.this);
if (height == virtualHeight) return;
LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) mShareViewVirtualHeight.getLayoutParams();
params.height = virtualHeight;
mShareViewVirtualHeight.setLayoutParams(params);
}
});
为什么添加一个View呢?其实开始并没有添加,而是设置整个跟布局的padding,但是这样有的手机的虚拟按键可能会变浅,所以就使用这种方式添加了一个背景色.
为了保证再次分享之后dialog消失
@Override protected void onResume() {
super.onResume();
if (isFirst) isFirst = false;
else this.finish();
}
虽然在xml中设置了动画,进来动画是指定的,但是出去的时候有的手机还是默认的那种,需要在finish()方法中添加如下设置就可以了.
@Override
public void finish() {
super.finish();
//注销掉activity本身的过渡动画
overridePendingTransition(0,0);
}
如果想知道分享的具体问题,可以看这篇博客.Android微博,微信,QQ分享功能的实现
欢迎讨论.
推荐阅读
- 一个人的旅行,三亚
- EffectiveObjective-C2.0|EffectiveObjective-C2.0 笔记 - 第二部分
- 第326天
- 赠己诗
- 考研英语阅读终极解决方案——阅读理解如何巧拿高分
- 如何寻找情感问答App的分析切入点
- D13|D13 张贇 Banner分析
- 托福听力高分备考方案
- 自媒体形势分析
- 姚老师互动问答会|姚老师互动问答会 # 问题001(如何更有智慧的和身边人分享金刚智慧())