如何缩放gif图片以全屏显示(所有尺寸)

时间:2018-08-19 18:45:52

标签: android image android-studio scale gif

我在此布局中看到了一个gif图片的醒目页面:

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".Splash">

    <pl.droidsonroids.gif.GifImageView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:adjustViewBounds="true"
        android:cropToPadding="true"
        android:scaleType="fitXY"
        android:src="@drawable/fneclis_splash_bg"
        android:visibility="visible"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />
</android.support.constraint.ConstraintLayout>

我创建了所有布局尺寸(小,常规,大和xlarge),并对gif图像(ldpi,mdpi,hdpi,xhdpi,xxhdpi和xxxhdpi)做了同样的事情。

我的问题是小布局占用了mdpi gif图像大小,普通布局占用了xxhdpi图像大小,其他布局也存在相同的问题。

我认为问题可能出在这里,因为它包含有关“标题”和全屏显示的几行内容 这是启动代码:

package com.medanis.fneclis

import android.content.DialogInterface
import android.content.Intent
import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import android.os.Handler
import android.view.View
import android.view.ViewConfiguration
import android.view.Window
import android.view.WindowManager
import android.widget.MediaController
import pl.droidsonroids.gif.GifDrawable
import pl.droidsonroids.gif.GifImageButton

class Splash : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        //hiding title bar of this activity
        window.requestFeature(Window.FEATURE_NO_TITLE)
        //making this activity full screen
       window.setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN)
        setContentView(R.layout.activity_splash)

        //2.63second splash time
        Handler().postDelayed({
            //start main activity
            startActivity(Intent(this, MainActivity::class.java))
            //finish this activity
            finish()
        },2630)


        val gib = GifImageButton(this)
        setContentView(gib)
        gib.setImageResource(R.drawable.fneclis_splash_bg)
        val mc = MediaController(this)
        mc.setMediaPlayer(gib.drawable as GifDrawable)
        mc.setAnchorView(gib)
        gib.setOnClickListener(object : DialogInterface.OnClickListener, View.OnClickListener {
            override fun onClick(p0: View?) {
                mc.show()
            }

            override fun onClick(p0: DialogInterface?, p1: Int) {
                mc.show()
            }

        })

    }
}

这可能是什么原因?请帮我,谢谢。

1 个答案:

答案 0 :(得分:0)

android:scaleType="fitXY" to android:scaleType="centerCrop"

好的,因此centerCrop用于均匀缩放图像,同时保持图像或gif的长宽比。而对于fitXY,它仅适合图像的父视图,而不考虑纵横比。