我有一个布局activity_main
(其中包括)显示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
??
答案 0 :(得分:0)
AnimatedGif
直接加载到布局中。第一个是构造函数,它将Context
和AttributeSet
:作为参数
public AnimatedGif(Context context, AttributeSet attrs) {
}
这样您可以直接将其添加为xml项,指定类的完整限定包
<com.package.AnimatedGif
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" />
现在您可能希望使用自定义属性来指定要加载的gif。所以你可以在你的attr.xml文件中声明
<declare-styleable name="AnimatedGif">
<attr name="gifres" format="integer" />
</declare-styleable>
并在构造函数内部,您可以像
一样加载它TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.AnimatedGif);
int value = a.getInt(R.styleable.AnimatedGif_gifres, 0));
stream = context.getResources().openRawResource(value);
a.recycle();
答案 1 :(得分:0)
我怎样才能使im显示gifImageView?
因为activity_main.xml
是要使用代码添加自定义ImageView
的Activity的布局:
1。使用LinearLayout
中的activity_main.xml
作为根布局并将orientation
设置为vertical
2。将ID分配给activity_main.xml
的根布局,如:
android:id="@+id/main_layout"
3。在onCreate
方法中获取根布局:
LinearLayout linearLayout = (LinearLayout)findViewById(R.id.main_layout);
4. 现在将gifImageView
视图对象添加到linearLayout:
linearLayout.addView(gifImageView);