我的父线性布局
<LinearLayout
android:id="@+id/gif_linear_layout"
android:background="@drawable/shape"
android:layout_marginTop="5dp"
android:layout_width="200dp"
android:layout_height="200dp"
android:orientation="vertical" />
所以我有这个类GifWebView
import android.content.Context;
import java.io.InputStream;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Movie;
import android.os.SystemClock;
import android.view.View;
public class GifWebView extends View {
private Movie mMovie;
InputStream mStream;
long mMoviestart;
public GifWebView(Context context, InputStream stream) {
super(context);
mStream = stream;
mMovie = Movie.decodeStream(mStream);
}
@Override
protected void onDraw(Canvas canvas) {
canvas.drawColor(Color.TRANSPARENT);
super.onDraw(canvas);
final long now = SystemClock.uptimeMillis();
if (mMoviestart == 0)
{
mMoviestart = now;
}
int gif_image_duration = mMovie.duration();
if(gif_image_duration==0)
{
gif_image_duration = 1;
}
final int relTime = (int) ((now - mMoviestart) % gif_image_duration);
mMovie.setTime(relTime);
mMovie.draw(canvas, 10, 10);
this.invalidate();
}
}
我在我的主要活动中创建此类的实例以显示gif图像 哪个工作得很好 在主要活动中
GifWebView gif_view;//global var
// already existing linear layout in my layout file
// and then this in onCreate() method
gif_linear_layout = (LinearLayout)findViewById(R.id.gif_linear_layout);
InputStream stream = null;
try {
stream = getAssets().open(gif_name);
//stream = getAssets().open("gif_images").;
}
catch (IOException e)
{
e.printStackTrace();
}
gif_view.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT));
gif_linear_layout.addView(gif_view);
现在有人请告诉我如何设置通过创建GifWebVIew类实例创建的视图的布局参数
实际上我希望实例视图完全适合我的线性布局 但它不适合
请提出任何帮助。
答案 0 :(得分:1)
您必须使用LinearLayout.LayoutParams,才能正确执行。
你应该检查:
父布局没有WRAP_CONTENT
个参数。在这种情况下,如果布局不是必须填充所有空间的主布局,则内部视图不会扩展其大小,因为父级环绕它。
视图中的gif是否正确扩展:在查看视图大小时图像是否被拉伸?我建议你把彩色背景用来理解视图和布局的确切界限,我多次陷入这个问题,以此作为例行程序:)
看到您正确展开图像,可能是图像没有缩放。为此,您必须使用ImageView功能缩小和扩展图像。 尝试扩展ImageView而不是View,然后使用setScaleType:
公共类GifWebView扩展了ImageView {
//(...)
gif_view.setScaleType(ScaleType.CENTER_INSIDE);
答案 1 :(得分:1)
// just replace your parent layout with this
<LinearLayout
android:id="@+id/gif_linear_layout"
android:background="@drawable/shape"
android:layout_marginTop="5dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" />