Post 图片来自数据库
Post images from the DataBase
我有一个名为 iiti 的数据库,它有一个名为 ImgName 的字符串,
ImgName 的值,它是 Drawable 文件夹中图像的名称。
我想 post 在 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)
我该如何解决这个错误?
在您的 Activity 中试试这个:
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 大。
将图像缩小为:
Bitmap b = BitmapFactory.decodeResource(context.getResources(),
resourceId);
iv.setImageBitmap(Bitmap.createScaledBitmap(b, b.getWidth()/2, b.getHeight/2, false));
我有一个名为 iiti 的数据库,它有一个名为 ImgName 的字符串, ImgName 的值,它是 Drawable 文件夹中图像的名称。 我想 post 在 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)
我该如何解决这个错误?
在您的 Activity 中试试这个:
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 大。
将图像缩小为:
Bitmap b = BitmapFactory.decodeResource(context.getResources(),
resourceId);
iv.setImageBitmap(Bitmap.createScaledBitmap(b, b.getWidth()/2, b.getHeight/2, false));