从CustomListViewAdapter中的Imageview获取内容以通过Facebook共享

时间:2013-05-07 18:15:08

标签: android listview imageview share

我正在使用textview创建一个像CustomListview这样的聊天,而像这样创建每个帖子的Imageview:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

    <TextView
        android:id="@+id/text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
       android:textIsSelectable="true" />

    <ImageView
        android:id="@+id/image"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/ic_launcher" />

</LinearLayout>

如果有人发送图片,则会在ImageView中显示。现在我想实现这个功能来点击Imageview并获取内容以便在Facebook上分享它。所以基本问题是如何通过点击它来获取Imageview的内容。只是传递源代码不起作用,因为如果有人发送另一张图片,它就会改变。

2 个答案:

答案 0 :(得分:1)

您可以使用以下代码从ImageView获取位图: -

Bitmap bmap = Bitmap.createBitmap(imageView.getDrawingCache());

希望这有帮助。

答案 1 :(得分:0)

在共享之前,您需要将ImageView的内容保存到位图中,然后保存到文件中。如果您已在文件中包含内容,请使用文件URL而不是再次执行此操作。 android.content.Intent.ACTION_SEND将显示手机上将接收该类型消息的所有选项(在本例中为image /*)。

imageView.setOnClickListener(new onClickListener() {
    public void onClick(View view) {
        ImageView imageView = (ImageView) view;
        BitmapDrawable bitmapDrawable = (BitmapDrawable)imageView.getDrawable();
        Bitmap bitmap = bitmapDrawable.getBitmap();

        // Save this bitmap to a file.
        File cacheDir = this.getExternalCacheDir();
        File downloadingMediaFile = new File(cacheDir, "abc.png");
        try {
            FileOutputStream out = new FileOutputStream(downloadingMediaFile);
            bitmap.compress(Bitmap.CompressFormat.PNG, 100, out);
            out.flush();
            out.close();
        } catch (IOException e) {
            e.printStackTrace();
        }

        // Now send it out to share
        Intent share = new Intent(android.content.Intent.ACTION_SEND);
        share.setType("image/*");
        share.putExtra(Intent.EXTRA_STREAM, Uri.parse("file://" + downloadingMediaFile));
        try {
            startActivity(Intent.createChooser(share, "Send Image."));
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }
});

希望这有帮助。