0

xmlファイルを介して画像を作成しようとしています。可能かどうかお聞きしたいです

以下は、イメージビューに表示するためにイメージとして作成したい XML ファイルのコードです。

主な活動

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);

        setContentView(R.layout.main);
spinner2 = (Spinner) findViewById(R.id.spinner1);
imageshow =(ImageView) findViewById(R.id.imageshow);
items = fillMaps();

        SimpleAdapter adapter=new SimpleAdapter(this,items,R.layout.spinner,
                new String[]{"name"},
                new int[]{R.id.title});

        spinner2.setAdapter(adapter);

        spinner2.setOnItemSelectedListener(new MyOnItemSelectedListener());

        spinner2.setVisibility(View.VISIBLE);}

レイアウト/main.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:orientation="vertical" >

    <TextView
        android:id="@+id/title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/bible_help_title" />


<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/layout_1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" 
         android:layout_below="@id/bible_help_title">


    <Spinner
        android:id="@+id/spinner1"
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content" 
        android:prompt="@string/bible_help_title"
        android:drawSelectorOnTop="true"
        />
</RelativeLayout>


    <ImageView 
        android:id="@+id/imageshow"
        android:layout_width="fill_parent" 
        android:layout_height="fill_parent" 
        android:layout_below="@id/layout_1"/>  

</RelativeLayout>

ユーザーが Spinner からリソースを選択した後、showimagetask を呼び出します。

public class MyOnItemSelectedListener implements OnItemSelectedListener {
            public void onItemSelected(AdapterView<?> arg0, View arg1, int `arg2,long arg3) {`



                new showimagetask(arg2).execute(arg2);


                //if (!snoop.isRecycled()) { snoop.recycle();}

            }

            public void onNothingSelected(AdapterView<?> arg0) {

            }
}

イメージタスクを表示

   public class showimagetask extends AsyncTask<Integer, Void, Bitmap> 
        {
    ProgressDialog dialog;
    int checkid;

    String Map_name;
    String Drawing_1;
    int resID;

     public showimagetask(int id) {
            checkid = id;

            HashMap map = (HashMap)items.get(id);
            Map_name= map.get("name").toString();
            Drawing_1= map.get("Drawing").toString();
            resID = getResources().getIdentifier(Drawing_1, "raw", "tool.mobile");  



        }

    @Override
    protected void onPreExecute() {
        super.onPreExecute();

        dialog =new ProgressDialog(BibleHelpActivity.this);
        dialog.setTitle(Map_name);
        dialog.setMessage("Loading");
        dialog.show();

        imageshow.setImageBitmap(null);
        snoop=null;
        System.gc();



    }


    @Override
    protected Bitmap doInBackground(Integer... params) {
        // TODO Auto-generated method stub
        snoop= BitmapFactory.decodeStream(getResources().openRawResource(resID));
        //Bitmap snoop = BitmapFactory.decodeResource(getResources(), resID);

        return snoop;
    }
    protected void onPostExecute(Bitmap result) {
        /*
        TouchImageView imageshow = imageButtonReference.get();
         */

        imageshow.setImageBitmap(snoop);
        imageshow.setTag(resID);
        dialog.dismiss();


     }

}


private List<HashMap<String, String>> fillMaps()

{
    List<HashMap<String, String>> items = new ArrayList<HashMap<String,String>>();

    HashMap<String,String> i = new HashMap<String,String>();
        i.put("name","EricPhoto");
        i.put("Drawing", "img_101");
        items.add(i);
                    i = new HashMap<String,String>();
                    i.put("name","PeterPhoto");
            i.put("Drawing", "img_102");
            items.add(i);
        i = new HashMap<String,String>();
        i.put("name","Schedule");
        i.put("Drawing", "table_1");
        items.add(i);
return items;
    }

Raw フォルダー内のファイル

img_101.jpg
img_102.jpg
table_1.xml

Raw フォルダー内の table_1.xml のコード

 <?xml version="1.0" encoding="utf-8"?>
        <TableLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content" 
             android:background="@drawable/white"
             android:orientation="vertical" 
            >
        <TableRow
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" >

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="2" />

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="10" />
            <TextView 
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="Eric Graduation" /> 
        </TableRow>

        <TableRow
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" >

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="2" />

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="17" />
            <TextView 
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="peter birthday" /> 
        </TableRow>
    </TableLayout>
4

1 に答える 1

0

これを行う理由がわかりません。

目的がImageView内の画像としてビュー構造を表示することだけである場合、それを実行するためのより簡単な方法があります。

LayoutInflatorを使用して、通常どおりTableLayoutを拡張します。それへの参照を取得したら、 getDrawingCache()を呼び出して、ImageViewに渡すことができるビットマップオブジェクトを取得できます。

Bitmap mImg = tbl.getDrawingCache();
mImgView.setImageBitmap(mImg);
于 2012-06-01T15:10:32.767 に答える