Android实现加载(loading)图片旋转的三种方式
2014-06-23 16:47
246 查看
我们在Android应用开发中可能经常用到类似如下效果的加载过程中的图片旋转效果:
上面的图片是一张gif格式的动态图片,我们知道,在Android中对gif动态图片的支持是不好的。可以通过第三方jar包来支持gif图片的显示。另外还有其他两种方式来实现图片旋转,下面逐一介绍。
1、首先将第三方GifView.jar包导入到工程目录libs目录下。下载:http://download.csdn.net/detail/pxc0215/7540095
2、在activity_main.xml布局文件中添加imageview控件。
3、MainActivity.java中的主要代码:
对于静态格式(如png格式)的图片,,可通过Animation类来实现图片旋转效果。
layout布局文件start.xml中,放入imageview控件:
类文件中主要代码如下:
通过以上代码,我们可以看到想要的静态图片旋转效果了。当然,动画可使用myAlphaAnimation.startNow()和myAlphaAnimation.cancel()来启动和停止。
PS:以上方法也可以制作成xml来保存动画。即在工程目录的res目录下创建anim目录,新建Android xml文件,这里命名为loading.xml,其中代码如下:
在主类MainActivity中使用如下代码:
这样,效果和上面的方法一样。
===================================================================
科普:
关于动画的实现,Android提供了Animation,在Android SDK介绍了2种Animation模式:
1. Tween Animation:通过对场景里的对象不断做图像变换(平移、缩放、旋转)产生动画效果,即是一种渐变动画;
2. Frame Animation:顺序播放事先做好的图像,是一种画面转换动画。
动画类型
下面先来看看Android提供的动画类型。Android的animation由四种类型组成
在XML文件中:
alpha 渐变透明度动画效果
scale 渐变尺寸伸缩动画效果
translate 画面转换位置移动动画效果
rotate 画面转移旋转动画效果
在Java 源码中定义了相应的类,可以使用这些类的方法来获取和操作相应的属性:
AlphaAnimation渐变透明度动画效果
ScaleAnimation渐变尺寸伸缩动画效果
TranslateAnimation画面转换位置移动动画效果
RotateAnimation画面转移旋转动画效果
上面的图片是一张gif格式的动态图片,我们知道,在Android中对gif动态图片的支持是不好的。可以通过第三方jar包来支持gif图片的显示。另外还有其他两种方式来实现图片旋转,下面逐一介绍。
方法一、直接使用gif动态图片。
1、首先将第三方GifView.jar包导入到工程目录libs目录下。下载:http://download.csdn.net/detail/pxc0215/75400952、在activity_main.xml布局文件中添加imageview控件。
<com.ant.liao.GifView android:id="@+id/img_gif" android:layout_width="fill_parent" android:layout_height="fill_parent" android:enabled="false"/>
3、MainActivity.java中的主要代码:
// 从xml中得到GifView的句柄,当然,事先还要引入GifView的包import com.ant.liao.GifView; myGifView = (GifView) findViewById(R.id.img_gif); // 设置Gif图片源,首先要将loading.gif导入到drawable文件内 myGifView.setGifImage(R.drawable.loading); // 添加监听器 myGifView.setOnClickListener(this); // 设置显示的大小,拉伸或者压缩 myGifView.setShowDimension(300, 300); // 设置加载方式:先加载后显示、边加载边显示、只显示第一帧再显示 myGifView.setGifImageType(GifImageType.COVER);
方法二、使用Animation(android.view.animation.Animation)类实现图片旋转。
对于静态格式(如png格式)的图片,,可通过Animation类来实现图片旋转效果。layout布局文件start.xml中,放入imageview控件:
<ImageView android:id="@+id/img_loading" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true"/>
类文件中主要代码如下:
public class StartActivity extends Activity { private Animation myAlphaAnimation;//声明Animation类的对象 private ImageView myImageView; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.start); myImageView=(ImageView)findViewById(R.id.img_loading);//取到imageview控件 myImageView.setImageResource(R.drawable.loading);//设置要显示的图片 myAlphaAnimation=new RotateAnimation(0f, 360f,Animation.RELATIVE_TO_SELF,0.5f,Animation.RELATIVE_TO_SELF,0.5f);//设置图片动画属性,各参数说明可参照api myAlphaAnimation.setRepeatCount(3);//设置旋转重复次数,即转几圈 myAlphaAnimation.setDuration(1000);//设置持续时间,注意这里是每一圈的持续时间,如果上面设置的圈数为3,持续时间设置1000,则图片一共旋转3秒钟 myAlphaAnimation.setInterpolator(new LinearInterpolator());//设置动画匀速改变。相应的还有AccelerateInterpolator、DecelerateInterpolator、CycleInterpolator等 myImageView.setAnimation(myAlphaAnimation);//设置imageview的动画,也可以myImageView.startAnimation(myAlphaAnimation) myAlphaAnimation.setAnimationListener(new AnimationListener() { //设置动画监听事件 @Override public void onAnimationStart(Animation arg0) { // TODO Auto-generated method stub } @Override public void onAnimationRepeat(Animation arg0) { // TODO Auto-generated method stub } //图片旋转结束后触发事件,这里启动新的activity @Override public void onAnimationEnd(Animation arg0) { // TODO Auto-generated method stub Intent i2 = new Intent(StartActivity.this, MainActivity.class); startActivity(i2); } }); } }
通过以上代码,我们可以看到想要的静态图片旋转效果了。当然,动画可使用myAlphaAnimation.startNow()和myAlphaAnimation.cancel()来启动和停止。
PS:以上方法也可以制作成xml来保存动画。即在工程目录的res目录下创建anim目录,新建Android xml文件,这里命名为loading.xml,其中代码如下:
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"> <rotate android:fromDegrees="0" android:toDegrees="359" android:duration="1500" android:repeatCount="-1" android:pivotX="50%" android:pivotY="50%" /> </set>
在主类MainActivity中使用如下代码:
myImageView = (ImageView) findViewById(R.id.img_png); myImageView.setImageResource(R.drawable.loading); myAlphaAnimation=AnimationUtils.loadAnimation(this, R.anim.loading); myAlphaAnimation.setInterpolator(new LinearInterpolator()); myImageView.startAnimation(myAlphaAnimation);
这样,效果和上面的方法一样。
方法三:使用多幅图片交替播放,大家可以谷歌,这里省略。
===================================================================科普:
关于动画的实现,Android提供了Animation,在Android SDK介绍了2种Animation模式:
1. Tween Animation:通过对场景里的对象不断做图像变换(平移、缩放、旋转)产生动画效果,即是一种渐变动画;
2. Frame Animation:顺序播放事先做好的图像,是一种画面转换动画。
动画类型
下面先来看看Android提供的动画类型。Android的animation由四种类型组成
在XML文件中:
alpha 渐变透明度动画效果
scale 渐变尺寸伸缩动画效果
translate 画面转换位置移动动画效果
rotate 画面转移旋转动画效果
在Java 源码中定义了相应的类,可以使用这些类的方法来获取和操作相应的属性:
AlphaAnimation渐变透明度动画效果
ScaleAnimation渐变尺寸伸缩动画效果
TranslateAnimation画面转换位置移动动画效果
RotateAnimation画面转移旋转动画效果
相关文章推荐
- ProgressBar 自动旋转的图片、进度条 利用android:indeterminateDrawable来实现ProgressBar三种方式
- Android 三种方式实现自定义圆形页面加载中效果的进度条
- Android之Volley框架加载网络图片的三种方式
- Android 三种方式实现自定义圆形页面加载中效果的进度条
- Android loading界面的一种加载动态图片的方式
- Android 使用三种方式缓存加载 倒影图片
- Android三种基本的加载网络图片方式
- Android三种基本的加载网络图片方式
- js图片延迟加载(Lazyload)三种实现方式
- android多种方式实现异步加载图片
- android多种方式实现异步加载图片
- Android提高篇之自定义dialog实现processDialog“正在加载”效果、使用Animation实现图片旋转
- Android 三种方式实现自定义圆形页面加载中效果的进度条
- Android三种基本的加载网络图片方式
- Android三种基本的加载网络图片方式(转)
- android 加载图片的三种方式
- Android 图片旋转动画两种实现方式
- Android三种基本的加载网络图片方式