使用TransitionDrawable怎么实现实现多张图片淡入淡出效果

  介绍

使用TransitionDrawable怎么实现实现多张图片淡入淡出效果?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

<强>一、两张图片的切换效果,轻松实现

//讲需要切换的两张图片直接给TransitionDrawable对象   TransitionDrawable  TransitionDrawable =, new  TransitionDrawable (new 可拉的[]{getresource () .getDrawable (R.drawable.advertiseone) getresource () .getDrawable (R.drawable.advertisetwo)});//一样用   imgAdvertise.setImageDrawable (transitionDrawable);//切换图片的时间间隔   transitionDrawable.startTransition (3000),

<强>二、切换多张图片

实现思路,通过开启一个线程(死循环),每隔一段时间发送消息到UI主线程中替换主线程中的transitionDrawable对象中的图片就可以了,需要用到处理程序。这里实现在广告倒计时中无限循环图片切换的次数

package  com.coofond.carservice;      import  android.content.Intent;   import  android.graphics.drawable.Drawable;   import  android.graphics.drawable.TransitionDrawable;   import  android.os.Build;   import  android.os.Bundle;   import  android.os.CountDownTimer;   import  handler;   import  android.os.Message;   import  android.support.annotation.Nullable;   import  android.support.v7.app.AppCompatActivity;   import  android.view.View;   import  android.widget.ImageView;   import  android.widget.TextView;      import  com.coofond.carservice.mine.ui.LoginAct;/* *   ,* Created  by  IBM 提醒2016/10/7。   ,*/public  class  WelcomeAct  extends  AppCompatActivity  {   private 才能;TextView  tvTimecount;   private 才能;ImageView  imgAdvertise;   private 才能int  adTime =, 6000;//倒计时秒数   private 才能int  timeInterval =, 1000;//倒计时间隔   private 才能;CountDownTimer  mTimer;//计时器   private 才能int  change =, 0;//记录下标   private 才能,int [], ids =, new  int [] {R.drawable.advertiseone, R.drawable.advertisetwo,, R.drawable.advertisethree};   private 才能,可拉的[],画板;//图片集合   private 才能;Thread  mThread;//线程   private 才能boolean  mThreadFlag =,真的,//线程结束标志符      @Override才能   protected 才能;void  onCreate (@Nullable  Bundle  savedInstanceState), {   ,,,super.onCreate (savedInstanceState);   ,,,setContentView (R.layout.act_welcome);   ,,,initView ();   ,,,initData ();   ,,,initEvent ();   ,,}//才能定义夹头   private 才能Handler  mHandler =, new 处理程序(new  Handler.Callback (), {   ,,@Override   ,,,public  boolean  handleMessage (Message 味精),{   ,,,,,int  duration =, msg.arg1;   ,,,,,TransitionDrawable  TransitionDrawable =, new  TransitionDrawable (new 可拉的[]{画板[change  %, ids.length),   ,,,,,,,,,画板[(时间+ change  1), %, ids.length]});   ,,,,,改变+ +,//改变标识位置   ,,,,,imgAdvertise.setImageDrawable (transitionDrawable);   ,,,,,transitionDrawable.startTransition(持续时间);   ,,,,,return 假;   ,,,}   ,,});//开才能启线程发送消息,让过渡一直在改变   private 才能class  MyRunnable  implements  Runnable  {   ,,@Override   ,,,public  void 运行(),{   ,,,,,//这个虽然(真实的)是做死循环   ,,,,,while  (mThreadFlag), {   ,,,,,,,int  duration =, 1000;//改变的间隔   ,,,,,,,Message  Message =, mHandler.obtainMessage ();   ,,,,,,,message.arg1 =,持续时间;   ,,,,,,,mHandler.sendMessage(消息);   ,,,,,,,try  {   ,,,,,,,,,thread . sleep(持续时间);   ,,,,,,,,,//隔时间秒发送一次   ,,,,,,,},catch  (InterruptedException  e), {   ,,,,,,,,,e.printStackTrace ();   ,,,,,,,}   ,,,,,}   ,,,}   ,,}      private 才能;void  initView (), {   ,,,tvTimecount =, (TextView), findViewById (R.id.tv_advert);   ,,,imgAdvertise =, (ImageView), findViewById (R.id.iv_advetise);   ,,,//填充图片   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

使用TransitionDrawable怎么实现实现多张图片淡入淡出效果