Android图形动画 使用ScaleAnimation

Android图形动画 使用ScaleAnimation使用ScaleAnimation实现了一个类似于翻转的动画效果。感觉ScaleAnimation算是一个比较好用的动画类了,看了一下API感觉方法和构造方法也都很简单。就不再赘述太多直接上代码吧– 第一步:准备两张照片,放置在res/drawble下。首先在layout中写好布局文件,这里要用framelayout布局,让两张图片一张覆盖在另一张上。相信聪明的你…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

使用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。。。所以发四张好了:

Android图形动画 使用ScaleAnimation
 
Android图形动画 使用ScaleAnimation
 

Android图形动画 使用ScaleAnimation
 
Android图形动画 使用ScaleAnimation
 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/183892.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 静态网站(博客)生成器(Static-Site-Generators)

    静态网站(博客)生成器(Static-Site-Generators)一.介绍静态网站生成器到底有多少呢?GitHub用户对静态博客生成程序进行了大规模总结,太多了啊,太恐怖,萌新被吓傻了……GitHub地址:https://github.com/pinceladasdaweb/Static-Site-Generators我选了jekyll博客,因为两大代码仓库GitHub(国外)和Coding(国内)都提供免费空间自动构建Jekyll网站!我的…

    2022年7月11日
    43
  • pycharm删除所有注释_pycharm怎么取消注释

    pycharm删除所有注释_pycharm怎么取消注释1Pycharm去掉项目所有#注释通过快捷键ctrl+shift+R进入项目全局替换窗口,点击右上角勾选正则,然后搜索框输入(#.*)即可,然后点击replaceall去掉所有注释2去掉单个文件注释ctrl+f

    2022年8月26日
    8
  • 【SpringBoot】34、SpringBoot整合Redis实现序列化存储Java对象

    【SpringBoot】34、SpringBoot整合Redis实现序列化存储Java对象前面我们已经介绍过【SpringBoot】十七、SpringBoot中整合Redis,我们可以看出,在SpringBoot对Redis做了一系列的自动装配,使用还是非常方便的一、背景1、思考‘通过我们前面的学习,我们已经可以往Redis中存入字符串,那么我们要往Redis中存入Java对象该怎么办呢?2、方案我们可以将Java对象转化为JSON对象,然后转为JSON字符串,存入Redis,那么我们从Redis中取出该数据的时候,我们也只能取出字符串,并转

    2022年6月21日
    33
  • StringUtils工具类常用方法「建议收藏」

    StringUtils工具类常用方法「建议收藏」StringUtils类在操作字符串是安全的,不会报空指针异常,也正因此,在操作字符串时使用StringUtils相比使用原生的String会更加安全。一、判空StringUtils提供常用的判断空字符串有两个方法:isEmpty和isBlank,这两者的有何区别呢,直接看源码://isEmptypublicstaticbooleanisEmpty(Stringstr)…

    2022年6月11日
    37
  • gridview属性_GridView

    gridview属性_GridViewGridView在生成HTML代码的时候会自动加上style=”border-collapse:collapse;”以及border=1,rules=”all”这些属性,这些在IE下都没什么影响,但是在FF下就会影响显示,style=”border-collapse:collapse;”;是由于设置了CellSpacing=”0″产生的,当设置CellSpacing=”1″后就没有,可以去掉sty

    2022年9月25日
    5
  • c++酒店管理系统课程设计_基于java的酒店管理系统源码

    c++酒店管理系统课程设计_基于java的酒店管理系统源码朋友们好呀,我是马保国。呸。我是一名大一刚过完一个学期的学生。————————————————————————在我忙碌的努力的在RushB并且备战期末考试的时候我想到了我还得学习!!!但是,临近期末课又少所以,我想到了我一直想要去做的,一个关于酒店的一些小东西,他能够做到酒店的一些鸡操(基本操作),像酒店的入住,退房,还有酒店员工的系统这些我认为比较牛(我认为比较厉害,别抬杠)的一个操作,所以在接近期末的时候疯狂肝,终于在考完试回到家的第一天写完了(前后20天左右了,浪费生命的臭玩意,啊。。。.

    2025年12月7日
    8

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号