思路:
用1个View盖住(半透明),另外一个目标layout做移动使用
注:
查看了一下F4, 还有这几个能用:
AlphaAnimation 渐变透明
ScaleAnimation 尺寸伸缩?(用这个可能更好一点)
TranslateAnimation 位置移动
RotateAnimation 旋转?
AnimationSet 这个厉害哦
<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" >
<View
android:id="@+id/backGroundView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/half_transparent" />
<LinearLayout
android:id="@+id/targetLayout"
android:layout_width="3dp"
android:layout_height="match_parent"
android:layout_marginLeft="-2dp"
android:background="@drawable/background_main"
android:orientation="vertical" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="helloworld" />
</LinearLayout>
<View
android:id="@+id/rightBackGroundView"
android:layout_width="20dp"
android:layout_height="match_parent"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:layout_marginRight="0dp"
android:background="@color/transparent" />
</RelativeLayout>
显示时的代码,其中xxx就是上面的layout。
paramTest.leftMargin = -width +1;:这句很关键,不加1不行啊
DisplayMetrics dm =new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
xxx.setVisibility(View.VISIBLE);
View targetLayout = findViewById(R.id.targetLayout);
int width =(int)(dm.widthPixels *0.8);
int widthRight =(int)(dm.widthPixels *0.2 -1);
View rightBackGroundView = findViewById(R.id.rightBackGroundView);
RelativeLayout.LayoutParams p1 = (RelativeLayout.LayoutParams)rightBackGroundView.getLayoutParams();
p1.width = widthRight;
rightBackGroundView.setLayoutParams(p1);
RelativeLayout.LayoutParams paramTest = (RelativeLayout.LayoutParams) targetLayout.getLayoutParams();
paramTest.width = width;
paramTest.leftMargin = -width +1;
targetLayout.setLayoutParams(paramTest);
TranslateAnimation anim = new TranslateAnimation(1, width, 0, 0);
anim.setDuration(300);
anim.setFillAfter(true);
anim.setAnimationListener(new AnimationListener() {
public void onAnimationStart(Animation animation) {
}
public void onAnimationRepeat(Animation animation) {
}
public void onAnimationEnd(Animation animation) {
findViewById(R.id.rightBackGroundView).setOnClickListener(new OnClickListener() {
public void onClick(View v) {
hideAreaView();
}
});
}
});
targetLayout.startAnimation(anim);
隐藏代码就比较简单了,xxx知道是什么了吧:
private void hideAreaView() {
DisplayMetrics dm =new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
View areaLayout = findViewById(R.id.targetLayout);
int width =(int)(dm.widthPixels *0.8);
TranslateAnimation anim = new TranslateAnimation(width,1,0, 0);
anim.setDuration(300);
anim.setFillAfter(true);
anim.setAnimationListener(new AnimationListener() {
public void onAnimationStart(Animation animation) {
Log.i("start","start" );
}
public void onAnimationRepeat(Animation animation) {
Log.i("onAnimationRepeat","onAnimationRepeat" );
}
public void onAnimationEnd(Animation animation) {
xxx.setVisibility(View.GONE);
findViewById(R.id.rightBackGroundView).setOnClickListener(null);
}
});
areaLayout.startAnimation(anim);
}
分享到:
相关推荐
在Android开发中,动画(Anim)是提升用户体验的重要一环,尤其在实现界面交互时,如左右滑动效果。这个名为"Android_Anim_左右滑动效果.zip"的压缩包文件包含了一系列XML文件,用于实现Android应用中的滑动切换效果...
本教程将深入探讨如何利用`anim`资源来实现一个自定义的ProgressBar,为你的应用增添更多视觉吸引力和用户体验。 首先,让我们理解`anim`资源在Android中的作用。`anim`文件夹是用来存放动画资源的,它支持多种类型...
"anim动画包"是一个专门为Android平台设计的资源包,包含了用于实现Activity切换效果的XML动画文件。这些XML文件可以直接导入到项目的res目录下的anim子目录中,以便在应用中使用。下面我们将深入探讨Android中的...
视图动画在Android API Level 8(即Android 2.2 Froyo)及更低版本中被广泛使用,它并不真正改变UI元素的属性,而是通过模拟改变来实现动画效果。`anim_zoom_in.xml`通常会定义在项目的`res/anim`目录下,用于描述一...
本文将深入探讨如何使用Android Animation来实现动态的Loading效果。 一、Android Animation概述 Android Animation系统提供了多种动画类型,包括属性动画(Property Animation)、补间动画(Tween Animation)和帧...
然而,由于在Android 3.0(API级别11)中被废弃,开发者通常会转向使用HorizontalScrollView或者RecyclerView来实现类似的效果。HorizontalScrollView是线性布局管理器的一种变体,可以沿水平方向显示多个视图;...
"activity anim"指的是针对Activity切换时所使用的动画效果,特别是这里提到的"activity左进右出",它是一种常见的过渡动画,使得新Activity从屏幕左侧滑入,而当前Activity则从右侧滑出,为用户界面带来动态和流畅...
1. **Translation Animation**(移动动画):通过改变视图的坐标,实现视图的平移效果。 2. **Scale Animation**(缩放动画):调整视图的宽度和高度,实现放大或缩小的效果。 3. **Rotation Animation**(旋转动画...
"android_anim.zip"这个压缩包文件显然聚焦于Android平台上的属性动画(Property Animation),这是一种强大的机制,允许开发者创建丰富的视觉效果,如对象的移动、缩放、旋转等。我们将深入探讨这个主题,了解...
此外,软件还支持添加背景图像、声音效果,甚至可以与其他Flash元素(如按钮、图形)进行交互,实现更加复杂的功能。 在压缩包文件中,"Anim-FX"可能是包含该工具的主要文件夹,可能包括以下内容: 1. 安装程序:...
### Android开发中界面效果的各种实现 #### 概述 在Android开发过程中,为了提升用户体验,开发者经常需要对应用界面进行各种美化与优化处理。本文主要介绍Android开发中常见的几种界面效果实现方法,包括Activity...
曲线数据可能基于贝塞尔曲线或其他插值算法,以实现平滑的动画效果。 5. **事件和触发器**:动画文件可能还包含事件标记,比如声音播放、特效触发等,这些事件可以与特定的时间点关联。 6. **附加信息**:根据...
CSS3实现波纹特效和H5实现动态波浪效果是前端网页设计中常见的视觉表现形式,主要通过CSS3的相关属性和方法来创建动态和富有美感的视觉效果,以下详细说明这些知识点。 首先,CSS3是HTML5的主要样式表语言,其通过...
Android系统提供了丰富的动画机制,让开发者能够实现各种动态效果,如activity间的平滑过渡、控件的交互反馈等。本文将深入探讨Android中的anim动画,以及如何利用它们来创建令人印象深刻的应用体验。 一、Android...
在3D建模和游戏开发领域,MD5格式(Mighty Death Pixel)是一种常见的用于存储模型和动画数据的...通过了解和掌握这些工具,你可以更好地实现从设计概念到游戏实际应用的无缝过渡,提高开发效率并确保项目的顺利进行。
在Android开发中,布局(Layout)和动画(Anim)是两个至关重要的概念,它们共同构建了用户界面的交互性和视觉效果。"anim and layout"这个主题涵盖了如何在Android应用中创建和管理动态效果以及用户界面布局的方法...
了解并熟练掌握这四种动画机制,可以帮助开发者在Android应用中实现各种炫酷的动态效果,从而提高用户满意度和应用的吸引力。在实践中,不断尝试和优化动画效果,可以打造出更加生动、引人入胜的用户体验。
Swift-Anim是一个专门为Swift开发者设计的动画库,它以其简洁的声明式API为特色,使得在iOS、macOS、tvOS或watchOS等Apple平台上创建动态效果变得异常简单。这个库的目标是提供一种高效且直观的方式来实现各种复杂的...
本项目实现了点击泡泡后出现魔法效果,这涉及到Android API中的动画处理、图形绘制以及事件监听等多个方面的知识。 首先,我们要理解Android动画系统。Android提供了多种动画机制,包括属性动画(Property ...
本篇文章将深入探讨如何在Android中实现3D卡片的滑动效果。 首先,我们来理解3D卡片滑动效果的基本概念。这种效果通常涉及到两个关键元素:CardView和视图转换动画。CardView是Android Support Library提供的一种UI...