Android TransitionDrawable ImageView过度效果使用实例

实现两张图片渐隐渐现的过渡效果Transition Drawable实现两张图片之间动态过度效果的方式。

运行如下所示:第一张为初始界面,第二张为过度中界面,第三张为过渡结束

    
  

新建一个TransitionDrawable的Android工程。

目录结构:

主界面activity_main.xml代码如下:

<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">
    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="@string/button_text"
        android:layout_centerInParent="true"
        android:onClick="change"
        android:background="@drawable/transition"
        android:layout_marginBottom="20dp"/>
</RelativeLayout>

主界面主要是一个应用了TransitionDrawable的按钮

transition是在drawalbe文件夹下,其代码如下所示:

<?xml version="1.0" encoding="utf-8"?>
<transition xmlns:android="http://schemas.android.com/apk/res/android">
	<item android:drawable="@color/red"></item>
	<item android:drawable="@color/green"></item>
</transition>

strings.xml代码如下:

 <string name="app_name">TransitionDrawable</string>
    <string name="hello_world">Hello world!</string>
    <string name="action_settings">Settings</string>
    <string name="button_text">过渡效果</string>

colors.xml代码如下:

<?xml version="1.0" encoding="utf-8"?>
<resources>
  <color name="red">#ff0000</color>
  <color name="green">#00ff00</color>
</resources>

MainActivity.java代码如下

package com.shen.transitiondrawable;

import android.app.Activity;
import android.graphics.drawable.TransitionDrawable;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;

public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}

	@Override
	public boolean onOptionsItemSelected(MenuItem item) {
		// Handle action bar item clicks here. The action bar will
		// automatically handle clicks on the Home/Up button, so long
		// as you specify a parent activity in AndroidManifest.xml.
		int id = item.getItemId();
		if (id == R.id.action_settings) {
			return true;
		}
		return super.onOptionsItemSelected(item);
	}

	public void change(View v)
	{
		TransitionDrawable drawable = (TransitionDrawable)((Button)v).getBackground();
		drawable.startTransition(2000);
	}
}

源码下载

扩展阅读:

http://www.tuicool.com/articles/uiaYBrU

http://adk.tumblr.com/post/13069401302/outofmemoryerror-imageview-and-transitiondrawable

时间: 2024-10-13 11:22:40

Android TransitionDrawable ImageView过度效果使用实例的相关文章

android 实现ImageView按压效果和解决背景图片拉申问题

建立一个.XML文件,名为:image_tab_bg.xml 1 <?xml version="1.0" encoding="utf-8"?> 2 <selector 3 xmlns:android="http://schemas.android.com/apk/res/android"> 4 <item android:state_pressed="true" android:drawable=

transitiondrawable ImageVIew切换动画

一个TransitionDrawable是一个特殊的Drawable对象,可以实现两个drawable资源之间淡入淡出的效果. <transition>节点下的每个<item>代表一个drawable资源.只能有两个<item>.先前转换调用startTransition().向后,调用 reverseTransition(). 文件位于: res/drawable/filename.xml文件名作为资源ID 编译资源类型: 指向 TransitionDrawable的

Android 实现登录界面和功能实例

最近一个android小程序需要登录功能,我简单实现了一下.现在记录下来也当做个笔记,同时也希望可以相互学习.所以,如果我的代码有问题,还各位请提出来.多谢了! 下面,就简述一下此实例的主要内容: 输入用户名和密码 ,从本地文件userinfo.json中读取users.判断此用户名是否在users中,如果不在则加入users,每次退出Activity都使用AES算法加密users,然后保存到userinfo.json中.用户名下拉菜单是由PopupWindow + ListView 实现. 运

Android开发之动画效果浅析

Android开发之动画效果浅析 请尊重他人的劳动成果,转载请注明出处:Android开发之动画效果浅析 程序运行效果图: Android动画主要包含补间动画(Tween)View Animation.帧动画(Frame)Drawable Animation.以及属性动画Property Animation.下面依次介绍一下各个动画. 1.   补间动画(Tween) Tween动画,通过对View 的内容进行一系列的图形变换 (包括平移.缩放.旋转.改变透明度)来实现动画效果.动画效果的定义可

Android实习札记(8)---ViewPager+Fragment实例详解

Android实习札记(8)---ViewPager+Fragment实例讲解 --转载请注明出处:coder-pig 在札记(5)中我们就说过要弄一个模仿微信页面切换的东东,就是ViewPager+Fragment 实现的一个东西,札记(6)中也学习了一下ViewPager的一些基本用法,本节就来将两者 结合以实现我们想要的效果! 1.ViewPager关于Fragment的说法? 先看下Google官网怎么说: 大概意思就是: ViewPager更多的时候是与Fragment协同使用,这样可

Android使用ImageView显示网络图片

本案例使用ImageView 简单的实现了网络图片的调用.当中注意事项.由于用到了网络,这里採用了HttpClient方法訪问网络联接,关于怎样使用,可參照文章?Android中使用HttpClient实现HTTP通信效果?,因此.须要注意配置网络权限问题.以及须要使用新线程及Handler来更新Activity,不然会直接报错Not Main Thread 看实例: MainActivity.java package com.example.imageview; import android.

Android 拖拽功能的使用实例

图片的拖拉功能是处理图片进一个有用且常用的功能,由于手机屏幕尺寸的限制,往往无法在手机上一次性的显示一张比较大的图片,也就是 说,我们在手机上一次性只能看到图片的一部分,此时就可以使用图片的拖动功能来拖动图片,进而查看图片相应的部分. 下面通过一个例子来学习实现图片的拖拉功能: 实例运行如下:1.这初始化的界面.2.为向左拖动后的效果 3.为向上拖动的效果         知识点: 在anndroid应用程序开发中,我们经常使用ImageView时经常会用到scaleType属性,如: <Ima

android linearlayout imageview置顶摆放

在练习android时,想在Linearlayout内放一图片,使其图片置顶,预期效果是这样的: 但xml代码imageview写成这样后, <ImageView android:layout_width="match_parent" android:layout_height="wrap_content" android:src="@drawable/moegirl_help" /> 效果却是这样的 试了谢方法,包括改为Relati

android 拓展ImageView播放GIF动画

原生Android控件ImageView并不能支持播放GiF格式的图片.如果将一张GIF的图片放入ImageView中,它只会显示图片的第一帧,不会产生任何动画效果. Android中播放GIF动画实现方法还是用多种的,最常用的就是使用   Frame动画, 但局限性较多,所以下面用一种拓展的ImageView实现效果. 1.要用到自定义控件,就要使用自定义控件的属性,因此需要在values下新建一个attrs.xml,可以为这个文件中添加任何需要自定义的属性. 这里只需要一个auto_play