Android GIF图像的问题
所以我在我的应用程序中使用了GIF。但是当我在其他设备上安装应用程序时,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
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"