介绍
使用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怎么实现实现多张图片淡入淡出效果