如何从Activity而不是XML文件中将图像放入ImageView?

时间:2013-04-08 21:14:44

标签: android

我想要做的是放置多个图像而没有内存不足的问题,所以我使用方法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();

    }

1 个答案:

答案 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中。