PNG未在ImageView中显示

时间:2015-08-19 09:19:34

标签: android android-imageview

我有一个很大的.png,我想在启动画面中显示它,但图像没有显示。 xml:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context="com.infaplic.lpi.activities.SplashActivity">

<ImageView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/imageView2"/>

活动的代码:

public class SplashActivity extends Activity {

ImageView imagen;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_splash);
    imagen=(ImageView)findViewById(R.id.imageView2);
    imagen.setImageDrawable(getResources().getDrawable(R.drawable.pantalla_arranque));
    new Handler().postDelayed(new Runnable() {
        @Override
        public void run() {

            Intent mainIntent = new Intent(SplashActivity.this, NextActivity.class);
            SplashActivity.this.startActivity(mainIntent);
            SplashActivity.this.finish();
        }
    }, 1000);
}
}

这样,图像不显示。我已经尝试使用android:src:在xml中,但它不起作用。

图像非常大。在将其放入ImageView之前,是否需要调整大小?如果没有,为什么图像没有显示?

谢谢。

编辑:PNG是1080x1920

5 个答案:

答案 0 :(得分:11)

既然你写的图像非常大,我猜它太大了。我在其中一个应用程序中有一个错误,我生成的图像大于2048像素。有些设备不支持如此大的图像,我猜你会遇到类似的问题。

如果这是一些背景图像缩小图像尺寸,背景图像并不重要,屏幕上的每个像素都必须拥有图像像素。

答案 1 :(得分:11)

在我的情况下,我使用的文件名如“go-back-filename.png”。而xml文件就像

 <ImageView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@drawable/go-back-icon"/>

在我将文件名更改为“go_back_icon”后,它运行正常。 希望这有助于某人。

答案 2 :(得分:4)

在此下方添加。请阅读选项,将图像范围缩放到ImageView中此view.ImageView.ScaleType的边界

使用此

imagen.setImageResource(R.drawable.pantalla_arranque);

然后

<ImageView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/imageView2"
        android:adjustViewBounds="true"
        android:scaleType="fitXY"/>  

android:adjustViewBounds :如果您希望ImageView调整其边界以保持其drawable的宽高比,请将此设置为true。

必须是boolean值,&#34; true&#34;或&#34; false&#34;。
请检查演示ImageView scaleType Samples。我希望它可以帮到你

答案 3 :(得分:1)

将您的ImageView更改为:

<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/imageView2"
android:scaleType="fitXY"
android:adjustViewBounds="false"/>

如果无效,请尝试在manifestActivity) android:hardwareAccelerated="false"

内添加此内容

修改

我一直在寻找答案,但我认为最好自己尝试一下......我创建了一个示例项目,我使用了ImageView 1080x1920我正在测试,因为我找到了我已经把它显示了3000毫秒......如果不重新缩放它,将会显示1000毫秒。

顺便提一句getDrawable(),我建议您使用:

imagen.setImageDrawable(ContextCompat.getDrawable(getApplicationContext(), R.drawable.imagenprueva));

XML

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_height="match_parent"
    >

    <ImageView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/imageView2"
        android:adjustViewBounds="true"
        android:scaleType="centerCrop"
        android:background="@drawable/imagen"
        />
    </RelativeLayout>

以下是完整的源代码,希望它有助于Source code

答案 4 :(得分:0)

在您的.xml文件中 添加
xmlns:app="http://schemas.android.com/apk/res-auto"

然后在ImageView中添加以下代码行:

app:srcCompat="@drawable/books"

不是

tools:srcCompat="@drawable/books"