如何在android中创建图像scrollview的位图?

时间:2015-04-08 04:49:07

标签: android android-bitmap

我为android-film制作了一个电影版的演示。我将图像绑定到我的LinearLayout运行时,现在我想将整个,可滚动视图保存到位图,我已经尝试了很多但是所有解决方案只将当前可见屏幕保存到位图,任何人都可以帮我如何保存整个可滚动在位图中查看(屏幕不可见),我的代码如下:

XML

<HorizontalScrollView
    android:id="@+id/horizontal_scroll_view"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="55dp"
    android:layout_centerHorizontal="true"
    android:layout_marginBottom="55dp"
    android:scrollbars="none" >

    <ScrollView
        android:id="@+id/scroler"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:fillViewport="true"
        android:scrollbars="none" >

        <LinearLayout
            android:id="@+id/mygallery"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="vertical" />
    </ScrollView>
</HorizontalScrollView>

的java

View insertPhoto(int i) {
    LinearLayout layout = new LinearLayout(getApplicationContext());
    layout.setLayoutParams(new LayoutParams(252, 252));
    layout.setGravity(Gravity.FILL);

    final ImageView imageView = new ImageView(getApplicationContext());
    imageView1 = new ImageView(getApplicationContext());
    imageView.setLayoutParams(new LayoutParams(250, 250));
    imageView.setScaleType(ImageView.ScaleType.FIT_XY);

    imageLoader.displayImage("file://" + dataT.get(i).sdcardPath,
            imageView, new SimpleImageLoadingListener() {

                public void onLoadingStarted(String imageUri, View view) {
                    imageView.setImageResource(R.drawable.no_media);
                    super.onLoadingStarted(imageUri, view);
                }
            });
    layout.addView(imageView);
    return layout;
}

使用这个我已经制作了垂直方向的胶片条。现在我想要这个电影片的位图来保存它。

1 个答案:

答案 0 :(得分:2)

public static Bitmap loadBitmapFromView(View v) {
        Bitmap b = null;
            v.measure(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
            b = Bitmap.createBitmap(v.getMeasuredWidth(),
                    v.getMeasuredHeight(), Bitmap.Config.ARGB_8888);
            Canvas c = new Canvas(b);
            v.layout(0, 0, v.getMeasuredWidth(), v.getMeasuredHeight());
            v.draw(c);
        saveImageToInternalStorage(b);
        return b;
    }