PNG图片无法在ImageView中显示

4

我有一个很大的.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);
}
}

这样,图片没有显示出来。我已经在xml中尝试使用android:src,但它不起作用。
这张图片非常大。我需要在将其放入ImageView之前调整大小吗?如果不需要,为什么图片没有显示?
谢谢。
编辑:PNG的分辨率是1080x1920。

快速问题,那个文件中还有其他的XML元素吗? - StG
1
检查日志,有一次我试图添加一个非常长的PNG文件,大约高度为4000像素。ImageView无法适应这个尺寸。因此,如果您的图像非常大,则不会显示在屏幕上,但是日志中应该会写入一些警告信息。 - Max Zavernutiy
2
@rekire 我明白了,只是想让他检查一下日志。因为如果太大的话,他应该会收到警告 =) - Max Zavernutiy
未收到有关图片过大的警告信息。 - Fustigador
我让Photoshop的人把图片发给我,稍微小一点,我们看看。 - Fustigador
显示剩余3条评论
5个回答

18

在我的情况下,我使用了一个文件名类似于“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”,然后它就正常工作了。希望这能帮助到别人。


1
这真的很有帮助。这个答案提醒了我一个小问题。 - amar

15

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

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


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调整其边界以保留其可绘制对象的纵横比,则将其设置为true。

必须是布尔值,可以是“true”或“false”。
请检查演示ImageView scaleType样本。我希望它能帮助您


我认为你的ImageSize太大了,请查看我的编辑答案。 - IntelliJ Amiya

1

将你的ImageView更改为以下内容:

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

如果不起作用,请尝试在您的Activity中的manifest上添加此内容:android:hardwareAccelerated="false"

编辑

我正在寻找答案,但我认为最好自己尝试一下...我创建了一个示例项目,在其中使用了1080x1920的ImageView,并且测试了一下,发现如果我设置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>

这是完整的源代码,希望能对您有所帮助源代码链接


@Fustigador 顺便说一句,我试过把setImageDrawable从程序中改为尝试将其放在XML src上,但比Background慢...我的意思是如果你将背景设置为图片,它会展示更长的时间(我正在测试3秒)顺带一提,我正在使用这个图片,你要用什么图片? - Skizo-ozᴉʞS ツ
我正在使用我们的Photoshop设计师发送给我的PNG文件。 - Fustigador
让我们在聊天中继续这个讨论 - Skizo-ozᴉʞS ツ

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

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

app:srcCompat="@drawable/books"

不是

tools:srcCompat="@drawable/books"


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接