Android GIF图像的问题

Android GIF图像的问题,android,Android,所以我在我的应用程序中使用了GIF。但是当我在其他设备上安装应用程序时,GIF不适合屏幕,或者它不在应该的位置。有人能解决这个问题吗?课程: package com.example.cyril.tryapp; import android.content.Context; import android.graphics.Canvas; import android.graphics.Movie; import android.util.AttributeSet

所以我在我的应用程序中使用了GIF。但是当我在其他设备上安装应用程序时,GIF不适合屏幕,或者它不在应该的位置。有人能解决这个问题吗?

课程:

 package com.example.cyril.tryapp;

    import android.content.Context;
    import android.graphics.Canvas;
    import android.graphics.Movie;
    import android.util.AttributeSet;
    import android.view.View;

import java.io.InputStream;

public class GifView extends View {

    private InputStream gifInputStream;
    private Movie gifMovie;
    private int movieWidth = 150, movieHeight = 500;
    private long movieDuration;
    private long mMovieStart;

    public GifView(Context context) {
        super(context);
        init(context);
    }

    public GifView(Context context, AttributeSet attrs) {
        super(context, attrs);
        init(context);
    }

    public GifView(Context context, AttributeSet attrs,
                   int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        init(context);
    }

    private void init(Context context){
        setFocusable(true);
        gifInputStream = context.getResources()
                .openRawResource(R.drawable.maestragif);

        gifMovie = Movie.decodeStream(gifInputStream);
        movieWidth = gifMovie.width();
        movieHeight = gifMovie.height();
        movieDuration = gifMovie.duration();
    }

    @Override
    protected void onMeasure(int widthMeasureSpec, 
            int heightMeasureSpec) {
        setMeasuredDimension(movieWidth, movieHeight);
    }

    public int getMovieWidth(){
        return movieWidth;
    }

    public int getMovieHeight(){
        return movieHeight;
    }

    public long getMovieDuration(){
        return movieDuration;
    }

    @Override
    protected void onDraw(Canvas canvas) {

        long now = android.os.SystemClock.uptimeMillis();
        if (mMovieStart == 0) {   // first time
            mMovieStart = now;
        }

        if (gifMovie != null) {

            int dur = gifMovie.duration();
            if (dur == 0) {
                dur = 1000;
            }

            int relTime = (int)((now - mMovieStart) % dur);

            gifMovie.setTime(relTime);

            gifMovie.draw(canvas, 0, 0);
            invalidate();

        }

    }

}
XML:


您的gif不会适合所有屏幕,因为您使用特定值设置了宽度和高度属性:

android:layout_width="130dp"
android:layout_height="230dp"

DP值与密度无关,但它们在每个屏幕上的大小不同,应用比例因子将DP值转换为PX值

请将您的代码同时发布。元素的位置可以直接在xml中设置,但也可以通过编程设置YUHM,那么我应该在那里放置什么,以便它适合其他屏幕?您希望整个屏幕与图像匹配,或者您想要一些边距?不,不是整个屏幕。我希望第一个gif显示在屏幕的左侧,另一个显示在顶部。您可以使用
权重属性:也可以使用
重力
/
布局重力
android:layout_width="130dp"
android:layout_height="230dp"