我们在Android应用开发中可能经常用到类似如下效果的加载过程中的图片旋转效果:

上面的图片是一张gif格式的动态图片,我们知道,在Android中对gif动态图片的支持是不好的。可以通过第三方jar包来支持gif图片的显示。另外还有其他两种方式来实现图片旋转,下面逐一介绍。

方法一、直接使用gif动态图片。

1、首先将第三方GifView.jar包导入到工程目录libs目录下。下载:http://download.csdn.net/detail/pxc0215/7540095

2、在activity_main.xml布局文件中添加imageview控件。

<com.ant.liao.GifViewandroid: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;@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.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);//设置图片动画属性,各参数说明可参照apimyAlphaAnimation.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() {  //设置动画监听事件  @Overridepublic void onAnimationStart(Animation arg0) {// TODO Auto-generated method stub}@Overridepublic void onAnimationRepeat(Animation arg0) {// TODO Auto-generated method stub}//图片旋转结束后触发事件,这里启动新的activity@Overridepublic void onAnimationEnd(Animation arg0) {// TODO Auto-generated method stubIntent 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"><rotateandroid: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画面转移旋转动画效果

Android实现加载(loading)图片旋转的三种方式相关推荐

  1. vue 加载动态图片出错的三种解决方法

    由于解析问题,通常直接引用链接,图片会加载失败,通过学习,整理出以下三种解决错误的方法 <template><div class="first"><! ...

  2. Android Glide加载圆形图片、圆角图片,部分圆角图片的使用方法

    Android Glide加载圆形图片.圆角图片,部分圆角图片的使用方法 前言 Gilde圆形图片/头像 Gilde普通圆角图片即四个角都是圆角 Gilde对指定角设置圆角 前言 通过本文,您可以实现 ...

  3. Linux下编译、链接、加载运行C++ OpenCV的两种方式及常见问题的解决

    Linux下编译.链接.加载运行C++ OpenCV的两种方式及常见问题的解决 在Linux下安装完OpenCV C++之后(还没有安装的读者请参考Ubuntu 18.04 安装OpenCV C++) ...

  4. Android App监听软键盘按键的三种方式与改变软键盘右下角确定键样式

    Android App监听软键盘按键的三种方式与改变软键盘右下角确定键样式 actionNone : 回车键,按下后光标到下一行 actionGo : Go, actionSearch : 放大镜 a ...

  5. 实现精灵图片绝对定位的三种方式(伪)

    精灵图片绝对定位的三种方式(伪) 有强迫症的我为此困扰了一上午,说白了还是自己实力不够,想法总被局限. 实现结果如上图中间的为最终满意样品 整体用列表写的` 左1: 把整体看成一个背景图加上面文字: ...

  6. android中加载Gif图片

           很多时候由于项目的需要,我们需要加载Gif的图片,实现动画效果,但是android本身并不支持直接加载Gif图片.因此网络上出现了很多关于android加载Gif图片的框架.今天在这里就 ...

  7. Android 高效加载大图片

    来源:http://www.open-open.com/lib/view/open1389755918242.html 我们在编写Android程序的时候经常要用到许多图片,不同图片总是会有不同的形状 ...

  8. Android Glide 加载圆形图片(绝对实用)

    1.导入依赖 implementation 'com.github.bumptech.glide:glide:4.6.1' 2.用Glide加载圆形图片 Glide.with(context).loa ...

  9. Android Glide加载圆形图片,设置圆形边框

    Glide加载图片,Glide可以很方便的实现圆形加载并且也还可以设置变色边框. 关于Glide的加载在这里不详细说了,主要说一下自定义BitmapTransformation来实现圆形图片加载 st ...

最新文章

  1. java png 转jpg_怎么用java将png图片转换成jpg格式的图片
  2. ElasticSearch+聚合+Aggregation+示例
  3. [Google API](1)简介
  4. 2019阿里应届内推编程题
  5. python easygui_python简单图形界面GUI入门——easygui
  6. ORACLE 10.2.01升级10.2.05 for windows 详细文档
  7. java 分批同时处理_java中List集合分批处理
  8. iOS 日志管理异常捕获组件LFLogManager
  9. angularjs中ui-sref传值步骤
  10. 借助 Resharper 和 StyleCop 让代码更整洁
  11. 网络编程:TCP简单实现群聊功能
  12. 10个办法让设计小白迅速get海报设计要点!
  13. 安装zabbix步骤
  14. F - Ubiquitous Religions
  15. 第一周总结 汉得日记
  16. linux里sh命令是做什么的?详解!
  17. nodejs生成uid
  18. 浦发银行c语言上机试题,浦发银行通信技术类招考笔试经验
  19. 《易经》 数中以9最为奇妙
  20. 线性回归使用的基本条件

热门文章

  1. 创业公司LOGO设计不容凑合 ! LOGO设计网让品牌更出色
  2. 什么软件能测试出内存有没有坏,有没有可以检测主板和内存坏没坏的软件
  3. “而立”,“不惑”和“知天命”--程序员的三个层次
  4. 房晟陶:面试高管,这一个问题就能测出其成色
  5. mysql rows_sent_MySQL慢查询日志释疑总结
  6. 年度榜单:2012年最流行的28款免费英文字体素材
  7. UE4 死活打不开工程,卡在91%就闪退了
  8. Python_Four
  9. ETS3/ETS4/ETS5/ETS6软件
  10. 为 Esp8266 配置 Arduino 开发环境并测试WiFi