从DataBase发布图像

时间:2018-03-27 09:25:31

标签: android android-imageview

我有一个名为iiti的DataBase,它有一个名为ImgName的String, ImgName的值,它是Drawable文件夹中Image的名称。 我想在imageView上发布该图片

TextView descText = (TextView) findViewById(R.id.descriptionText);
        descText.setText(iiti.getneighborhood() + "\n");

ImageView iv = (ImageView) findViewById(R.id.imageView);
    int resourceId = this.getResources().getIdentifier(iiti.getLatLat(),"drawable",this.getPackageName());
    iv.setImageResource(resourceId);

上面的代码只是让ImageView成为白色空白图像,如果我尝试使用此代码

ImageView iv = (ImageView) findViewById(R.id.imageView);
        iv.setImageResource(R.drawable.hii);
        //hii is a png image in the drawable folder

这是我的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:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".DetailActivity">

    <TextView
        android:id="@+id/cityText"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:gravity="center_horizontal"
        android:text="London"
        android:textSize="30sp" />

    <TextView
        android:id="@+id/neighborhoodText"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/cityText"
        android:gravity="center"
        android:text="West End"
        android:textSize="20sp" />

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_below="@+id/cityText"
        android:layout_marginTop="20dp"
        android:orientation="vertical">
        <ImageView
            android:id="@+id/imageView"
            android:layout_width="100dp"
            android:layout_height="100dp"
            android:scaleType="fitStart"
            android:src="@drawable/london_photo"/>

        <fragment xmlns:android="http://schemas.android.com/apk/res/android"
            android:id="@+id/map"
            android:name="com.google.android.gms.maps.SupportMapFragment"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_marginTop="10dp"
            android:layout_weight="1" />

    </LinearLayout>

</RelativeLayout>

应用程序崩溃这是Logcat:

03-27 15:21:10.984 9542-9542/com.example.android.mymaps E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.android.mymaps, PID: 9542
java.lang.RuntimeException: Canvas: trying to draw too large(110250000bytes) bitmap.
at android.view.DisplayListCanvas.throwIfCannotDraw(DisplayListCanvas.java:260)
at android.graphics.Canvas.drawBitmap(Canvas.java:1420)
at android.graphics.drawable.BitmapDrawable.draw(BitmapDrawable.java:545)

如何解决此错误?

2 个答案:

答案 0 :(得分:2)

在您的活动中尝试此操作:

val resourceId = this.getResources().getIdentifier(iiti.getImgName(), "drawable", this.getPackageName())
iv.setImageResource(resourceId)

或者你的碎片中的这个:

int resourceId = getActivity().getResources().getIdentifier(iiti.getImgName(), "drawable", getActivity().getPackageName());
iv.setImageResource(resourceId);

如有任何问题,请检查source

编辑:

这是你的崩溃:

Canvas: trying to draw too large(110250000bytes) bitmap.

因此,您尝试绘制的位图很大......那就是它。压缩文件,更改文件大小或做任何缩小文件大小的文件。如果你正在考虑 - 这个文件大110.25MB。

答案 1 :(得分:1)

将图像缩小为:

Bitmap b = BitmapFactory.decodeResource(context.getResources(),
                                       resourceId);
iv.setImageBitmap(Bitmap.createScaledBitmap(b, b.getWidth()/2, b.getHeight/2, false));