1

我正在为每个帖子创建一个像 CustomListview 这样的聊天,其中包含一个 textview 和一个 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 的内容。仅仅传递源是行不通的,因为如果有人发送另一张图片,它就会改变。

4

2 回答 2

1

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

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

希望这可以帮助。

于 2013-05-07T18:18:12.607 回答
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();
        }
    }
});

希望这可以帮助。

于 2013-05-07T23:11:38.323 回答