У меня есть приложение Android
, которое показывает экран с анимированным GIF
изображением во время загрузки. Изображение отображается вечно или отображается только на пустом экране, если я использую таймер . Я просто хочу показать это в течение 5 секунд. Как отобразить GIF
только на 5 секунд?
С этим кодом изображение отображается вечно:
public class MainActivity extends AppCompatActivity {
public GifImageView gifImageView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
gifImageView = (GifImageView) findViewById(R.id.GifImageView);
gifImageView.setGifImageResource(R.drawable.gif2);
}
}
С этим кодом изображение в формате gif не отображается, отображается только пустой экран, но через 5 секунд приложение закрывается:
public class MainActivity extends AppCompatActivity {
public GifImageView gifImageView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
gifImageView = (GifImageView) findViewById(R.id.GifImageView);
startCountDownTimer();
}
private void startCountDownTimer() {
new CountDownTimer( 5000, 5000 ) {
public void onTick(long millisUntilFinished) {
gifImageView.setGifImageResource(R.drawable.gif2);
}
public void onFinish() {
finish();
}
}.start();
}
* *} Тысяча двадцать-один
Вот код GifImageView:
public class GifImageView extends View {
private InputStream mInputStream;
private Movie mMovie;
private int mWidth, mHeight;
private long mStart;
private Context mContext;
public GifImageView(Context context) {
super(context);
this.mContext = context;
}
public GifImageView(Context context, AttributeSet attrs) {
this(context, attrs, 0);
}
public GifImageView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
this.mContext = context;
if (attrs.getAttributeName(1).equals("background")) {
int id = Integer.parseInt(attrs.getAttributeValue(1).substring(1));
setGifImageResource(id);
}
}
private void init() {
setFocusable(true);
mMovie = Movie.decodeStream(mInputStream);
mWidth = mMovie.width();
mHeight = mMovie.height();
requestLayout();
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
setMeasuredDimension(mWidth, mHeight);
}
@Override
protected void onDraw(Canvas canvas) {
long now = SystemClock.uptimeMillis();
if (mStart == 0) {
mStart = now;
}
if (mMovie != null) {
int duration = mMovie.duration();
if (duration == 0) {
duration = 1000;
}
int relTime = (int) ((now - mStart) % duration);
mMovie.setTime(relTime);
mMovie.draw(canvas, 0, 0);
invalidate();
}
}
public void setGifImageResource(int id) {
mInputStream = mContext.getResources().openRawResource(id);
init();
}