使用ScaleAnimation实现了一个类似于翻转的动画效果。
感觉ScaleAnimation算是一个比较好用的动画类了,看了一下API感觉方法和构造方法也都很简单。
就不再赘述太多直接上代码吧- -
第一步:
准备两张照片,放置在res/drawble下。
首先在layout中写好布局文件,这里要用framelayout布局,让两张图片一张覆盖在另一张上。
相信聪明的你看到这里已经秒懂等下的图片处理方式了。
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/root" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.example.dfanzhuan.MainActivity" > <ImageView android:id="@+id/ivA" android:layout_width="fill_parent" android:layout_height="fill_parent" android:src="@drawable/image_a" /> <ImageView android:id="@+id/ivB" android:layout_width="fill_parent" android:layout_height="fill_parent" android:src="@drawable/image_b" /> </FrameLayout>
第二部:
MainActivity.java
import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.view.animation.Animation; import android.view.animation.Animation.AnimationListener; import android.view.animation.ScaleAnimation; import android.widget.ImageView; public class MainActivity extends Activity { private ImageView imgA; private ImageView imgB; private ScaleAnimation sato0 = new ScaleAnimation(1, 0, 1, 1, Animation.RELATIVE_TO_PARENT, 0.5f, Animation.RELATIVE_TO_PARENT, 0.5f); private ScaleAnimation sato1 = new ScaleAnimation(0, 1, 1, 1, Animation.RELATIVE_TO_PARENT, 0.5f, Animation.RELATIVE_TO_PARENT, 0.5f); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); findViewById(R.id.root).setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { if (imgA.getVisibility() == View.VISIBLE) { imgA.startAnimation(sato0); }else { imgB.startAnimation(sato0); } } }); } private void showImageA() { imgA.setVisibility(View.VISIBLE); imgB.setVisibility(View.INVISIBLE); } private void showImageB() { imgA.setVisibility(View.INVISIBLE); imgB.setVisibility(View.VISIBLE); } private void initView() { //指定执行时间 imgA = (ImageView) findViewById(R.id.ivA); imgB = (ImageView) findViewById(R.id.ivB); showImageA(); //动画执行时间 sato0.setDuration(500); sato1.setDuration(500); sato0.setAnimationListener(new AnimationListener() { @Override public void onAnimationStart(Animation animation) { // TODO Auto-generated method stub } @Override public void onAnimationRepeat(Animation animation) { // TODO Auto-generated method stub } @Override public void onAnimationEnd(Animation animation) { if (imgA.getVisibility() == View.VISIBLE) { imgA.setAnimation(null); showImageB(); imgB.startAnimation(sato1); } else { imgB.setAnimation(null); showImageA(); imgA.startAnimation(sato1); } } }); } }
个人感觉难点在于对时间和图片翻转情况的理解,不过写几次以后就just soso了~
下面是效果图,因为还不会做git。。。所以发四张好了:
相关推荐
火焰动画通常属于2D图形动画,可以通过Canvas和Paint类来绘制,或者使用BitmapShader来实现更复杂的火焰纹理效果。以下是一些可能涉及的技术点: 1. **帧动画(Frame Animation)**:通过连续播放一系列静态图片来...
如果需要在动画中实现平滑的缩放效果,可以使用Android的Animation框架,如ScaleAnimation类。 图片的倒影效果可以通过创建原图的镜像,然后将其旋转180度并上下堆叠来实现。这通常涉及到Bitmap的复制、翻转和组合...
还有其他第三方库,如Lottie,可以加载并播放Adobe After Effects生成的动画JSON文件,实现更高级的图形动画效果。 总之,理解和掌握Android的各种动画机制是提升应用质量的重要步骤,而"Android各种动画效果全有...
例如,可以利用`onDraw()`方法进行图形绘制,然后使用`ObjectAnimator`或`ValueAnimator`来实现平移、旋转、缩放等动画。此外,还可以结合`Property`和`AnimatorSet`来创建复杂的动画序列。为了实现更精细的控制,还...
这些效果通常需要对Android图形系统有深入理解,包括视图层次、绘图过程以及硬件加速等。开发者可能使用了`Camera`类来实现3D转换,通过改变相机的位置和角度,使Dialog在屏幕上呈现出立体的进出效果。 总结起来,...
- **Android Vector Asset Studio**:创建矢量图形并支持动画,优化内存使用。 - **Android Studio Layout Editor**:直观地设计布局,预览动画效果。 - **Android Profiler**:性能分析工具,帮助优化动画的流畅...
在Android中,我们可以使用`AnimationDrawable`类来实现帧动画。这个类允许我们将多个图片资源(如PNG或JPEG)放在一个Drawable目录下,然后通过XML定义帧的顺序和持续时间。 例如,创建一个帧动画的XML文件可能...
Android中的`Animation`类是补间动画的基础,包括`TranslateAnimation`(平移)、`RotateAnimation`(旋转)、`ScaleAnimation`(缩放)和`AlphaAnimation`(透明度变化)。 3. **属性动画(Property Animation)**...
在按钮动画中,可能会使用`AlphaAnimation`(透明度动画)让按钮逐渐出现或消失,`TranslateAnimation`(平移动画)让按钮从左下角滑出,或者`ScaleAnimation`(缩放动画)调整按钮的大小。 2. **属性动画**(`...
这为实现独特视觉效果提供了无限可能性,但也需要对Android图形系统有深入理解。 总之,Android动画效果的实现涉及到多个层次和组件,开发者需要根据实际需求选择合适的动画类型,并注意性能优化。"PlayerDemo"项目...
在Android中,可以使用`ScaleAnimation`类,设定初始和结束的缩放比例。在iOS中,同样使用`CABasicAnimation`,改变`transform.scale`属性。对于更复杂的交互式缩放,可以考虑使用手势识别器,如Android的`...
首先,我们要理解这个项目的核心知识点是Android图形渲染和动画设计。在Android系统中,我们可以使用Canvas和Paint类来绘制2D图形,包括云、风和雪等天气元素。Canvas是画布,用于绘制各种图形;Paint则负责定义颜色...
例如,在Android中,我们可以使用Animation API,包括ValueAnimator、ObjectAnimator、TranslateAnimation、ScaleAnimation等,这些类提供了丰富的动画功能。在iOS中,Core Animation框架允许开发者创建复杂的2D和3D...
这可以通过使用Android的Animation API,如TranslateAnimation、ScaleAnimation、RotateAnimation,或者使用属性动画(Property Animation)系统,如ObjectAnimator、ValueAnimator来实现。此外,也可以结合使用...
补间动画是计算机图形学中的一个重要概念,尤其在游戏开发和UI设计中广泛使用。它是一种平滑物体从一个状态过渡到另一个状态的技术,通过在一段时间内连续改变对象的属性来实现动态效果。本示例源码将深入揭示补间...
5. `TweenAnimation`:如果DEMO包含对传统位图的动画处理,可能会使用TweenAnimation类,如TranslateAnimation、ScaleAnimation等,这些动画适用于View级别的变换。 6. `vectorDrawables.useSupportLibrary`:在...
Tween动画在不涉及复杂图形变换的情况下,能够轻松实现物体位置、大小、透明度等属性的变化,极大地提升了用户体验。 首先,Tween动画的核心在于`Animation`类和其子类,如`AlphaAnimation`(透明度变化)、`...
Canvas是Android中的绘图基础,它是Android图形层的一部分,允许开发者在Surface上绘制各种图形,如线条、圆、文本等。通过Canvas,开发者可以使用Path对象创建复杂的路径,使用BitmapShader为图像应用图案或颜色...
项目可能包含了XML布局文件、Java或Kotlin代码,以及可能的资源文件,如动画相关的图形和音频。 实现引导页动画时,需要注意以下几点: - **性能优化**:避免过度复杂的动画导致性能下降,确保动画流畅运行。 - **...