Android:隨筆——對頁面的View進行截圖

quincy發表於2017-06-29

轉載請標明地址 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();
        }
    }

總結

看到這個功能感覺無從下手,其實也挺簡單的,如果有需求不妨收藏一下,分享給有需求的朋友


相關文章