我想要做的是放置多个图像而没有内存不足的问题,所以我使用方法PutImage()并尝试将图像放在ImageView中,但是从Activity而不是XML文件中
这是我的XML代码
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" android:fitsSystemWindows="true" android:alwaysDrawnWithCache="false">
<ImageView
android:id="@+id/imageView1"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_alignParentTop="true"
/>
</RelativeLayout>
这是活动
public class RecipeBanana extends Activity {
ImageView v;
Button button;
Context localcontext = null;
public static Drawable getAssetImage(Context context, String filename) throws IOException {
AssetManager assets = context.getResources().getAssets();
InputStream buffer = new BufferedInputStream((assets.open("drawable/" + filename + ".jpg")));
Bitmap bitmap = BitmapFactory.decodeStream(buffer);
return new BitmapDrawable(bitmap);
}
public void PutImage(ImageView v, String x){
try {
v.setImageDrawable(Drawable.createFromStream(localcontext.getAssets().open("flags/" + x + ".jpg"), null));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_recipe_banana);
ImageView v=(ImageView) findViewById(R.id.imageView1);
PutImage(v,"bananarecipe");
addListenerOnButton();
}
答案 0 :(得分:0)
您永远不会调用getAssetImage(),因此您不需要该方法,请将其删除。您不需要创建变量来保存对上下文的引用。活动是一个上下文,因此您可以直接调用getAssets()
,而无需在其前面放置任何内容。
试试这样:
public class RecipeBanana extends Activity {
ImageView v;
Button button;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_recipe_banana);
ImageView v=(ImageView) findViewById(R.id.imageView1);
PutImage(v,"bananarecipe");
addListenerOnButton();
}
public void PutImage(ImageView v, String filename){
try {
v.setImageDrawable(Drawable.createFromStream(getAssets().open("flags/" + filename + ".jpg"), null));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
如果bananarecipe.jpg
内有一个名为assets/flags/
的文件,则使用此代码,然后将其加载到ImageView中。