视频http://www.jikexueyuan.com/course/341.html
activity_main.xml
<FrameLayout 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" android:id="@+id/root" tools:context="com.example.card2d.MainActivity" > <ImageView android:id="@+id/ivA" android:layout_width="match_parent" android:layout_height="match_parent" android:src="@drawable/background_1"/> <ImageView android:id="@+id/ivB" android:layout_width="match_parent" android:layout_height="match_parent" android:src="@drawable/background_2"/> </FrameLayout>
MainActivity.java
public class MainActivity extends Activity { //声明变量 private ImageView imageA; private ImageView imageB; 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 View.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub //当点击图片的时候我们应该让A来进行执行 //启动动画,让它来加载图片A //判断imageA是否是显示的 if(imageA.getVisibility()==View.VISIBLE){ //让imageA加载第一个动画 imageA.startAnimation(sato0); } else{ //让imageB加载第二个动画 imageB.startAnimation(sato0); } } }); } //让图片A显示,图片B隐藏 private void showImageA(){ imageA.setVisibility(View.VISIBLE); imageB.setVisibility(View.INVISIBLE); } //让图片A隐藏,图片B显示 private void showImageB(){ imageA.setVisibility(View.INVISIBLE); imageB.setVisibility(View.VISIBLE); } //写一个初始化方法,让A显示 private void initView(){ //获得对象引用 imageA=(ImageView)findViewById(R.id.ivA); imageB=(ImageView)findViewById(R.id.ivB); //让图片A显示 showImageA(); //给动画添加执行时间0.5秒 sato0.setDuration(500); sato1.setDuration(500); //给第一个动画添加一个监听事件,当第一个动画执行完毕后执行第二个动画 sato0.setAnimationListener(new Animation.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) { // TODO Auto-generated method stub //监听第一个动画什么时候停止,停止了让它执行第二个 //判断第一个动画是否是显示的 if(imageA.getVisibility()==View.VISIBLE){ //因为这是结束的动画监听,如果第一个动画是显示的, //那么我们需要将它隐藏,然后执行第二个动画 //将第一张动画清空 imageA.setAnimation(null); //调用第二张动画 showImageB(); //同时给showB添加上动画效果 imageB.startAnimation(sato1); } else{//如果是第二张动画正在执行 //将第二张动画清空 imageB.setAnimation(null); //调用第一张动画 showImageA(); //同时给showA添加上动画效果 imageA.startAnimation(sato1); } } }); } }
相关推荐
在Android开发中,2D翻转是一种常见的动画效果,它能为用户界面带来生动和交互性的体验。2D翻转通常用于控件如按钮、图片或者整个布局的过渡效果,使得应用看起来更加现代化和吸引人。这个教程我们将深入探讨如何在...
在Android开发中,滑屏2D翻转是一种常见的交互效果,通常用于切换界面或展示细节。这个"Android滑屏2D翻转"的demo提供了一个简单易懂的实例,非常适合初学者来理解和实践这一技术。下面我们将深入探讨实现这一效果所...
实现页面批量图片元素翻页效果,有问题联系我 var page1=["img/blue1.png","img/red1.png","img/white1.png"];//第1页 var page2=["img/blue2.png","img/red2.png","img/white2.png"];//第2页 var page3=["img/blue3...
我们可以通过改变`RotateTransform`的角度属性来实现2D翻转,而通过调整`ScaleTransform`的X和Y轴比例,可以实现类似3D翻转的效果。 1. **2D翻转**: - 创建一个新的`RotateTransform`实例,设置其`CenterX`和`...
因此,在开发时需要考虑使用JavaScript库如jQuery或polyfills来提供兼容性解决方案,或者提供降级的2D翻转效果。 7. **性能优化**: 由于3D转换可能对GPU造成较大负担,特别是在大型复杂的3D场景中。为优化性能,...
这个过程涉及到2D图形渲染、动画帧序列以及用户交互处理等多个方面的技术知识。下面我们将详细探讨如何在CocosCreator中创建翻牌效果。 首先,我们需要了解CocosCreator的基础架构。CocosCreator是一款基于Cocos2d-...
4. **兼容性处理**:对于不支持3D转换的浏览器,可以使用JavaScript模拟翻转效果,或者提供一种备选的2D翻转效果。 5. **优化性能**:确保在移动设备上,3D翻转效果不会过于消耗性能。可以考虑限制翻转频率,或者...
4. **平滑动画**:库提供了平滑的2D翻转动画,使得页面翻转过程看起来自然且逼真。 5. **可配置性**:开发者可以根据需求调整翻转的速度、角度、方向等参数,以适应不同应用场景。 6. **兼容性**:`EasyFlipView`...
在本篇【Cocos2D游戏之旅(四):卡牌翻转效果的实现(下)】中,我们将深入探讨如何在Cocos2D游戏引擎中实现引人入胜的卡牌翻转特效。Cocos2D是一款强大的2D游戏开发框架,广泛应用于iOS、Android以及Windows等平台...
可以通过检测浏览器特性,为不支持的浏览器提供备选方案,如简单的2D翻转或静态图片预览。 此外,由于3D转换可能影响性能,特别是当处理大量元素时,我们可以通过减少不必要的3D转换、优化布局和使用硬件加速来提高...
在Android平台上,实现2D图片翻转是一种常见的动画效果,可以增强用户界面的交互性和视觉吸引力。本教程将深入探讨如何使用Android的普通动画(Property Animation)系统来创建这种效果,特别是关注`ScaleAnimation`...
在本篇中,我们将深入探讨如何使用Cocos2D游戏引擎实现一个更加精确的卡牌翻转效果,即“只有当鼠标点中卡牌时才翻转”。这相对于上一个资源中的“屏幕有点击就翻转”是一个重要的优化,提高了用户体验,让用户能够...
html5 canvas左右翻转2d动画
1. **2D CSS3翻页**:这是最常见的一种方法,通过CSS3的transform属性实现2D翻转,如`transform: rotateY(90deg)`。这种方式实现简单,但在某些设备上可能性能不佳,尤其是旧款手机。 2. **3D CSS3翻页**:3D翻页...
本教程将深入探讨如何在Cocos2D框架中实现卡牌翻转效果,以增强玩家的游戏体验。 首先,我们要了解Cocos2D的基本概念。Cocos2D是一个开源的2D游戏开发框架,它提供了丰富的图形绘制、动画控制、物理引擎等功能,...
`QTransform`是Qt提供的一个矩阵转换类,可以用来执行2D和3D图形变换,如缩放、旋转和翻转。在翻转过程中,`QTransform`可以用于构建一个包含翻转操作的转换矩阵,然后应用到`QPainter`上。 以下是实现翻转的基本...
2D效果您可以通过初始化2D JKFlippingView来将2D翻转视图添加到您的应用程序,如下所示。JKFlippingView* flippingView2D = [[JKFlippingView alloc ] init2DFlapWithPosition: JKFlapOpening2DPositionTopLeft and2...
本主题聚焦于"3D图片切换与图片翻转",特别是通过自封装的Java Archive (JAR) 包实现这一功能,并且能够设置翻转时间,以实现更流畅和动态的视觉效果。 首先,我们要理解3D图片翻转的概念。3D翻转是指在三维空间中...
Transform组件允许我们在2D或3D空间中对元素进行旋转、缩放、平移等变换。在本例中,我们主要关注Rotation组件,它负责实现旋转效果。Rotation组件有一个名为`angle`的属性,可以设置为所需的翻转角度。当用户滚动...