关闭

Android 底部滑上滑下动画的Dialog及它的WindowManager.LayoutParams设置

1618人阅读 评论(0) 收藏 举报
分类:
/**   
 * @Description: 
 * @author stone
 * @email  aa86799@163.com
 */
public class  MyDialog extends Dialog {
	
	private Animation mShowAnim;
	private Animation mHideAnim;
	private View mMainLayout;

	/**
	 * @param context
	 */
	public  MyDialog(Context context) {
		super(context);

		createShowAnim();
		createHideAnim();
		
		//mMainLayout = ...
	}
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {		
		setContentView(mMainLayout);
	}
	
	private void createShowAnim() {
		mShowAnim = new TranslateAnimation(1, 0, 1, 0, 1, 1, 1, 0);
		mShowAnim.setDuration(500);
	}
	
	private void createHideAnim() {
		mHideAnim = new TranslateAnimation(1, 0, 1, 0, 1, 0, 1, 1);
		mHideAnim.setDuration(500);
	}

	@Override
	public void show() {
		super.show();
		mMainLayout.startAnimation(mShowAnim);
	}
	
	private void dismissDialog() {
		super.dismiss();
	}
	
	@Override
	public void dismiss() {
		mHideAnim.setAnimationListener(new AnimationListener() {
			
			@Override
			public void onAnimationStart(Animation animation) {
				
			}
			
			@Override
			public void onAnimationRepeat(Animation animation) {
				
			}
			
			@Override
			public void onAnimationEnd(Animation animation) {
				dismissDialog();
			}
		});
		mMainLayout.startAnimation(mHideAnim);
	}
	
	@Override
	public boolean onKeyDown(int keyCode, KeyEvent event) {
		if (keyCode == KeyEvent.KEYCODE_MENU) {
			dismiss();
		}
		return super.onKeyDown(keyCode, event);
	}
}

MyDialog myDialog = new MyDialog(context);
WindowManager.LayoutParams params = myDialog.getWindow().getAttributes();
params.alpha = 0.8f; //窗口透明度
params.width =  mScreenWidth - 80;
params.height =  mScreenHeight / 4;
params.gravity = Gravity.CENTER_HORIZONTAL | Gravity.BOTTOM;
myDialog.getWindow().setAttributes(params);
//必须设置一个背景,否则会有系统的Dialog样式:外部白框
myDialog.getWindow().setBackgroundDrawableResource(R.drawable.translate);

设置的背景必须是Drawable对象或Drawable资源的id。

res/drawable/translate.xml

<?xml version="1.0" encoding="utf-8"?>
<color xmlns:android="http://schemas.android.com/apk/res/android" 
    android:color="#00000000">
</color>

----------------------------------------------------------------------------------------------------------------------------------------------------------------

刚一哥们跟我说,网上流行的是这样的实现方法:

mWindow.setWindowAnimations(R.style.dialog);  //添加动画  

res/values/styles.xml

<style name="dialog" parent="android:Animation">    
    <item name="@android:windowEnterAnimation">@anim/dialog_enter</item>  
    <item name="@android:windowExitAnimation">@anim/dialog_exit</item>  
</style> 

dialog_enter.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
    <translate
        android:duration="500"
        android:fromYDelta="100%p" />
</set>


dialog_exit.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
    <translate
        android:duration="500"
        android:toYDelta="100%p" />
</set>




0
0
查看评论

Android_Scroller滑动动画

当我们在使用view的scrollTo()或scrollBy()时,会发现这个滑动很生硬,没有动画效果,一下就过去了,就像我前篇文章提到的那样。如果能平滑的滑动回去的话,最好不过了,刚好安卓提供一个Scroller类,专门来处理view在scrollTo()或scrollBy
  • y22222ly
  • y22222ly
  • 2016-07-07 08:44
  • 1519

android窗体动画:activity启动从底部向上滑动出现,关闭的时候从顶部向下滑动消失的动画实现

在IOS系统里,我们打开app都是有启动动画的,这样子在打开一个新窗体,用户感觉有个过渡动画,体验效果很好,不会觉得很突然就冒出一个窗体,下面就实现一个android 的activity启动和关闭动画的例子。 知识点: 1、需要配置2个动画XML,一个是启动动画,一个是结束动画。 2、启...
  • changemyself
  • changemyself
  • 2013-08-17 10:48
  • 54244

Android开发 — 实现手指从屏幕底部向上滑动的方式来显示Dialog(可为实现自由拖动Dialog提供参考)

1、示例简介:实现手指从屏幕底部向上滑动的方式来显示Dialog。 2、示例展示: 3、示例细节: ①当手指在屏幕下方1/4区域内按下时,在手指按下位置显示Dialog; ②在手指向上滑动的过程中,Dialog能自动根据手指到屏幕底部的高度来显示自身的高度; ③当手指在屏幕上方3/4区域内抬起时...
  • aabingoo
  • aabingoo
  • 2016-12-05 10:10
  • 835

实现一个从底部向上弹出的菜单栏

仿微信实现一个从底部向上弹出的菜单栏
  • electhuang
  • electhuang
  • 2017-08-16 11:18
  • 187

android dialog实现底部弹出和手指滑动隐藏效果

直接来看效果图: 第一次隐藏是点击空白区域自动隐藏,第二次是通过手指滑动控制dialog隐藏。 实现这个效果的代码量很少,直接来看代码: @Override protected void onStart() { super.onStart(); Win...
  • duolaimila
  • duolaimila
  • 2016-09-13 15:48
  • 2686

Android自定义Dialog样式,从屏幕底部滑出动画

实际项目开发中默认的Dialog样式无法满足需求,需要自定义Dialog及其布局,并响应布局中控件的事件。 上效果图: 1. 自定义TakePhotosDialog继承自Dialog: public class TakePhotosDialog extends Dia...
  • u013122144
  • u013122144
  • 2015-12-30 17:42
  • 2762

android 5.0新特性 上滑关闭Toolbar

源码:http://download.csdn.net/detail/lm_zp/9562138 效果图: 上滑后 activity_main.xml <android.support.design.widget.CoordinatorLayout xmlns:android=...
  • LM_ZP
  • LM_ZP
  • 2016-06-28 20:12
  • 1551

android转场动画windowAnimation和ActivityAnimation的区别

显而易见,window与Activity本身从名字上就知道不同,但对于项目开发中 windowAnimation和ActivityAnimation的区别必须心领神会。 区别主要如下 1.windowAnimation包括windowEnterAnimation和windowExitAn...
  • shuitawuhen
  • shuitawuhen
  • 2015-12-14 17:27
  • 1228

Android 底部导航栏动态显示和隐藏(上滑,下拉)

假设中间的滑动区域为NestedScrollView,那么给NestedScrollView设置滑动监听事件,当检测到用户在向下滑动时隐藏底部栏,上滑时显示底部栏. 通过属性动画来进行设置底部栏的显示和隐藏.//为使底部栏能滑动隐藏,直接监听NestedScrollView的滑动事件 向下滑则隐藏...
  • xfhy_
  • xfhy_
  • 2017-11-20 17:36
  • 887

Android 上滑显示底部导航,下滑显示标题bar

本文简单介绍使用属性动画来实现上滑显示底部导航,下滑显示标题bar。先上图看效果,再分析: 可以看出这是个listview有标题和底部,有点像下拉刷新和上拉加载更多。只不过下拉或上拉一定时位置固定拉不动,且只在list的第一个item出现显示时,才平滑动画的让标题或底部显示或隐藏。 实现思路: ...
  • chenshufei2
  • chenshufei2
  • 2015-08-06 16:02
  • 2289
    个人资料
    • 访问:1376102次
    • 积分:13861
    • 等级:
    • 排名:第1088名
    • 原创:341篇
    • 转载:6篇
    • 译文:10篇
    • 评论:240条
    博客专栏
    最新评论
      QQ交流群: 473876194
      QQ交流群