使用ScaleAnimation实现2D翻转

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/root"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <ImageView
        android:id="@+id/iv_a"
        android:src="@drawable/stefanie01"
        android:scaleType="fitXY"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>
    <ImageView
        android:id="@+id/iv_b"
        android:src="@drawable/stefanie02"
        android:scaleType="fitXY"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>
</FrameLayout>
 1 package com.lyp.www.a2d;
 2
 3 import android.support.v7.app.AppCompatActivity;
 4 import android.os.Bundle;
 5 import android.view.View;
 6 import android.view.animation.Animation;
 7 import android.view.animation.ScaleAnimation;
 8 import android.widget.FrameLayout;
 9 import android.widget.ImageView;
10
11 public class MainActivity extends AppCompatActivity {
12
13     private FrameLayout flRoot;
14     private ImageView ivA;
15     private ImageView ivB;
16
17     boolean flag = true;
18
19     private ScaleAnimation anim1=
20             new ScaleAnimation(0,1,1,1, Animation.RELATIVE_TO_PARENT,0.5f,Animation.RELATIVE_TO_PARENT,0.5f);
21     private ScaleAnimation anim2=
22             new ScaleAnimation(1,0,1,1, Animation.RELATIVE_TO_PARENT,0.5f,Animation.RELATIVE_TO_PARENT,0.5f);
23
24     @Override
25     protected void onCreate(Bundle savedInstanceState) {
26         super.onCreate(savedInstanceState);
27         setContentView(R.layout.activity_main);
28
29         initView();
30         flRoot.setOnClickListener(new View.OnClickListener() {
31             @Override
32             public void onClick(View v) {
33                 if (flag) {
34                     ivA.startAnimation(anim2);
35                     flag=false;
36                 }else {
37                     ivB.startAnimation(anim2);
38                     flag=true;
39                 }
40             }
41         });
42
43     }
44
45     private void showImageA() {
46         ivB.setVisibility(View.INVISIBLE);
47         ivA.setVisibility(View.VISIBLE);
48     }
49
50     private void showImageB() {
51         ivA.setVisibility(View.INVISIBLE);
52         ivB.setVisibility(View.VISIBLE);
53     }
54
55     private void initView() {
56         flRoot = (FrameLayout) findViewById(R.id.root);
57         ivA = (ImageView) findViewById(R.id.iv_a);
58         ivB = (ImageView) findViewById(R.id.iv_b);
59         anim1.setDuration(600);
60         anim2.setDuration(600);
61
62         anim2.setAnimationListener(new Animation.AnimationListener() {
63             @Override
64             public void onAnimationStart(Animation animation) {
65
66             }
67
68             @Override
69             public void onAnimationEnd(Animation animation) {
70                 if (flag){
71                     ivB.setAnimation(null);
72                     showImageA();
73                     ivA.startAnimation(anim1);
74                 }else {
75                     ivA.setAnimation(null);
76                     showImageB();
77                     ivB.startAnimation(anim1);
78                 }
79             }
80
81             @Override
82             public void onAnimationRepeat(Animation animation) {
83
84             }
85         });
86     }
87 }
时间: 2024-10-08 13:27:41

使用ScaleAnimation实现2D翻转的相关文章

Android 2D翻转demo

简单实现由一张图片翻转到另一张图片的效果. 效果图: 关键代码 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_P

css 2D动画

2D动画: 通过 CSS3  transform转换,我们能够对元素进行移动.缩放.转动.拉长或拉伸. 2D移动:translate().使用translate()函数,你可以把元素从原来的位置移动.移动参照元素左上角原点 a)     语法:translate(tx)  | translate(tx,ty) b)     tx是一个代表X轴(横坐标)移动的向量长度,当其值为正值时,元素向X轴右方向移动,反之其值为负值时,元素向X轴左方向移动. c)      ty是一个代表Y轴(纵向标)移动的

Android安卓开发环境搭建应用游戏项目实战知识体系_极客学院

Java是Android开发的主要语言,所以掌握Java语言基础非常重要,本阶段讲解了Java的基本语法,要深入掌握Java语言,可以通过Java学习路径图学习. 17课程 10小时 19分钟 1.Java编程基础知识入门:变量与数据类型 本课学习变量的命名.定义和初始化及整数.浮点.字符数据类型. 25课时,141分钟 626人学习 2.Java语言Switch语句详解 本课学习switch语句,switch语句是分支语句的一组,适用于判断同一变量的多种状态,进行流程控制. 5课时,17分钟

CSS3略谈(中)

一.渐变 渐变是CSS3当中比较丰富多彩的一个特性,通过渐变我们可以实现许多炫丽的效果,有效的减少图片的使用数量,并且具有很强的适应性和可扩展性.可分为线性渐变.径向渐变 1.  linear-gradient线性渐变指沿着某条直线朝一个方向产生渐变效果 语法: linear-gradient( [<point> || <angle>,]? <stop>, <stop> [, <stop>]* ) 参数说明: 1-1.第一个参数表示线性渐变的方向

学习andriod开发之 图片翻转so easy

大家好我是akira 今天咱们玩一个非常好玩的东西 来先看下面一段短片 SO 这是什么 想必大家在上下班或者出入商场的时候太常见了 他就是一个旋转门而已 我们人跟着旋转门进去 然后再出来 就这么简单 可能还有更简单的 就是只有一个翻转的门 这种在我们看一些电影里面都有一些类似的几关或者密道都是采用这种门 只不过后者更为简单 只是将两扇门精简成了一扇 但是效果一样 当然咱们今天说的不是研究什么门的问题 咱们既然是移动开发人员 自然会思考这玩意在我们的 andriod客户端会怎么实现 咱们今天介绍一

canvas-图片翻转

图片90度翻转 在canvas中插入图片需先加载图片(利用Image对象);加载完成后再执行操作drawImage(obj,x,y,w,h) 插入图片的坐标宽高等值 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <link rel="stylesheet" type="text/css&q

Quartz 2D 的一些使用

Quartz 2D是一个绘图框架,最近看了一下它的官方文档以及提供的的demo.看着这些资料自己做了一些小结. 1.线段的绘制 (绘制一条线段) //获取图像上下文 CGContextRef context = UIGraphicsGetCurrentContext(); //设置线条颜色 CGContextSetRGBStrokeColor(context, .5, .5, .5, 1); //设置线条宽度 CGContextSetLineWidth(context, 1); //设置起点 C

iOS下的2D仿射变换机制(CGAffineTransform相关)

仿射变换简介 仿射变换源于CoreGraphics框架,主要作用是绘制2D级别的图层,几乎所有iOS设备屏幕上的界面元素都是由CoreGraphics来负责绘制.而我们要了解的2D仿射变换是其下负责二维坐标到二维坐标的线性变换工作,它保持了二维图形的“平直性”(即:直线经过变换之后依然是直线,圆弧经过变换之后依然是圆弧)和“平行性”(即:二维图形之间的相对位置关系保持不变,平行线依然是平行线,且直线上点的位置顺序不变),只有依照向量产生的二维线条间的夹角会可能发生变化.仿射变换包括:平移(Tra

动画,2D转换,,3D转换怎样运用

动画 @keyframes 规则用于创建动画.在 @keyframes 中规定某项 CSS 样式, 就能创建由当前样式逐渐改为新样式的动画效果. 属性{[email protected] 2animation } 如:@keyframes myfirst { from {background: red;} to {background: yellow;} } @-moz-keyframes myfirst /* Firefox */ { from {background: red;} to {b