Android:随笔——对页面的View进行截图

转载请标明地址 QuincySx:[http://www.jianshu.com/p/71309b2bd0e7]


我们在做项目时,往往有一个这样的需求:就是对视图的一部分进行截图然后分享出去
这个功能很简单还是简单的看代码吧

<android.support.constraint.ConstraintLayout
        android:id="@+id/layout_test"
        android:layout_width="90dp"
        android:layout_height="90dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.3">

        <ImageView
            android:layout_width="90dp"
            android:layout_height="90dp"
            android:src="@drawable/icon_image"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintRight_toRightOf="parent"
            app:layout_constraintTop_toTopOf="parent"/>

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="测试截图"
            android:textColor="#2b24c3"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintRight_toRightOf="parent"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintVertical_bias="1.0"/>
    </android.support.constraint.ConstraintLayout>

    <Button
        android:id="@+id/btn_test"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="onClick"
        android:text="点击测试"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/layout_test"/>

    <ImageView
        android:id="@+id/img_show"
        android:layout_width="90dp"
        android:layout_height="90dp"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/btn_test"
        tools:src="@drawable/icon_image"/>

对 Activity 里面获取控件的代码已省略,直接展示业务代码

public void onClick(View view) {
        //控件可以进行缓存  
        mConstraintLayout.setDrawingCacheEnabled(true);
        //获取缓存的 Bitmap  
        Bitmap drawingCache = mConstraintLayout.getDrawingCache();
        //对获取的 Bitmap  进行复制
        drawingCache = drawingCache.createBitmap(drawingCache);
        //关闭视图的缓存
        mConstraintLayout.setDrawingCacheEnabled(false);

        if (drawingCache != null) {
            mImageView.setImageBitmap(drawingCache);
            Toast.makeText(this, "获取失败", Toast.LENGTH_SHORT).show();
        } else {
            Toast.makeText(this, "获取成功", Toast.LENGTH_SHORT).show();
        }
    }

总结

看到这个功能感觉无从下手,其实也挺简单的,如果有需求不妨收藏一下,分享给有需求的朋友

上一篇:Android 开源项目


下一篇:PHP 源码探秘 - 因为 Java 和 Php 在获取客户端 cookie 方式不同引发的 bug2