我正在使用电影类播放gif动画文件,但无法适应屏幕。
如何将gif文件缩放或适合屏幕大小?
我已经使用GIF视图自定义视图并使用Movie类播放动画。
答案 0 :(得分:3)
您可以使用以下代码执行此操作:
float scaleWidth = (float) ((screenwidth / (1f*gifwidth)));//add 1f does the trick
float scaleHeight = (float) ((screenheight / (1f*gifheight)));
canvas.scale(scaleWidth, scaleHeight);
mMovie.draw(canvas, 0, 0);//mMovie is my gif picture
答案 1 :(得分:2)
如果您使用画布(@surface视图),请在游戏循环中获取其高度和宽度,并使用其值绘制背景图像。 如果没有,
WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
Display display = wm.getDefaultDisplay();
float tmp = display.getHeight;
现在tmp将包含显示高度的值。同样的宽度猜测。 使用这些属性来拉伸gif。
但是我必须说这个功能已被弃用,并且必须有更好的方法,但这可以正常工作:)
答案 2 :(得分:2)
试试这个GifImageView
init()
{
WindowManager wManager = (WindowManager) getContext().getSystemService(Context.WINDOW_SERVICE);
Display display = wManager.getDefaultDisplay();
float screenwidth = display.getWidth();
float screenheight = display.getHeight();
mWidth = (int) screenwidth;
mHeight = (int) screenheight;
//Then force invalidated the layout of this view.
requestLayout();
}
活动如下所示:
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.myactivity);
GifImageView gifImageView = (GifImageView) findViewById(R.id.GifImageView);
gifImageView.setGifImageResource(R.drawable.my_gif);
}
再次在我们的自定义布局中,我们需要遵循:
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
setMeasuredDimension(mWidth, mHeight);
}
@Override
protected void onDraw(Canvas canvas) {
//Other general code (included in given link)...
if (mMovie != null) {
//Other general code (included in given link)...
canvas.scale((float) this.getWidth() / (float) mMovie.width(),
(float) this.getHeight() / (float) mMovie.height());
mMovie.draw(canvas, 0, 0);
invalidate();
}
}
我已将此视图定制为我们的要求。
https://github.com/NihalPandya/demoUpload/blob/master/GifImageView.java
答案 3 :(得分:1)
您可以使用逐帧动画而不是动画gif来获得类似的最终结果和缩放。 您需要从gif中提取每个帧,并将单个帧作为png(或其他支持的格式)文件放在res / drawable文件夹中。创建和使用动画drawable:
http://developer.android.com/reference/android/graphics/drawable/AnimationDrawable.html
要缩放动画, check this
使用此方法可以使用各种scaleTypes来缩放动画。
我知道这并没有直接回答问题,但它会给出所需的最终结果。
答案 4 :(得分:0)
我会看看here。完整教程,涵盖了显示/播放GIF的3种不同方式。显然它不是很容易,谷歌仍有开放的问题报告。祝你好运:)