У меня есть макет activity_main
, что (помимо всего прочего) показывает ImageView
:Put генерируется ImageView в XML ImageView
<ImageView
android:id="@+id/profileImageView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/textView2"
android:layout_alignLeft="@+id/login_button" />
Я создал класс, который расширяет ImageView
и показывает анимированный GIF:
public class AnimatedGif extends ImageView
{
private Movie mMovie;
private long mMovieStart = 0;
public AnimatedGif(Context context, InputStream stream)
{
super(context);
mMovie = Movie.decodeStream(stream);
}
@Override
protected void onDraw(Canvas canvas)
{
canvas.drawColor(Color.TRANSPARENT);
super.onDraw(canvas);
final long now = SystemClock.uptimeMillis();
if (mMovieStart == 0)
{
mMovieStart = now;
}
final int realTime = (int)((now - mMovieStart) % mMovie.duration());
mMovie.setTime(realTime);
mMovie.draw(canvas, 10, 10);
this.invalidate();
}
}
В основном случае я пользуюсь следующим кодом:
setContentView(R.layout.activity_main);
.
.
.
InputStream stream = this.getResources().openRawResource(R.drawable.searching_gif);
AnimatedGif gifImageView = new AnimatedGif(this, stream);
ImageView im = (ImageView)findViewById(R.id.profileImageView);
Как я могу это сделать im
покажет gifImageView
??
Используйте этот пользовательский ImageView вместо этого в XML следующим образом: '< com.packagename.AnimatedGif android: id = "@ + id/profileImageView" и в java-классе вместо изображения ImageView; 'use' AnimatedGif image; ' –
Хранить все остальное одинаково. Просто измените '
@Tushar он вылетает на setContentView (R.layout.activity_main); – SharonKo