📌  相关文章
📜  如何在Android中捕获视图的屏幕截图并将其保存到图库?

📅  最后修改于: 2021-05-13 16:36:50             🧑  作者: Mango

在本文中,我们将捕获视图的屏幕快照并将图像存储在图库中。下面提供了一个示例视频,以使您对我们在本文中将要做的事情有个大概的了解。请注意,我们将使用Kotlin语言实施此项目。

分步实施

步骤1:创建一个新项目

要在Android Studio中创建新项目,请参阅如何在Android Studio中创建/启动新项目。请注意,选择Kotlin作为编程语言

步骤2:使用activity_main.xml文件

转到activity_main.xml文件,并参考以下代码。以下是activity_main.xml文件的代码。请注意,它具有一个id为card_View的Material Card视图,我们将在本文中对此视图进行截屏。

XML


  
    
  
        
  
            
  
            
  
        
    
  
    


XML


  
    
    
  
    
        
            
                
  
                
            
        
    
  


Kotlin
import android.Manifest
import android.content.ContentValues
import android.graphics.Bitmap
import android.graphics.Canvas
import android.net.Uri
import android.os.Build
import android.os.Bundle
import android.os.Environment
import android.provider.MediaStore
import android.util.Log
import android.view.View
import android.widget.Button
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import androidx.cardview.widget.CardView
import androidx.core.app.ActivityCompat
import java.io.File
import java.io.FileOutputStream
import java.io.OutputStream
  
class MainActivity : AppCompatActivity() {
  
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
  
        // write permission to access the storage
        ActivityCompat.requestPermissions(this, arrayOf(Manifest.permission.WRITE_EXTERNAL_STORAGE), 1)
        ActivityCompat.requestPermissions(this, arrayOf(Manifest.permission.READ_EXTERNAL_STORAGE), 1)
  
        // this is the card view whose screenshot
          // we will take in this article
        // get the view using fin view bt id
        val cardView = findViewById(R.id.card_View)
  
        // on click of this button it will capture 
          // screenshot and save into gallery
        val captureButton = findViewById


步骤3.在清单中添加权限。

转到AndroidManifest.xml文件和以下代码。它具有读取和写入外部存储的两个权限。在应用程序标记中,它具有android:usesCleartextTraffic =“ true”。

XML格式



  
    
    
  
    
        
            
                
  
                
            
        
    
  

步骤4:使用MainActivity.kt文件

转到MainActivity.kt文件,并参考以下代码。下面是MainActivity.kt文件的代码。在代码内部添加了注释,以更详细地了解代码。

科特林

import android.Manifest
import android.content.ContentValues
import android.graphics.Bitmap
import android.graphics.Canvas
import android.net.Uri
import android.os.Build
import android.os.Bundle
import android.os.Environment
import android.provider.MediaStore
import android.util.Log
import android.view.View
import android.widget.Button
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import androidx.cardview.widget.CardView
import androidx.core.app.ActivityCompat
import java.io.File
import java.io.FileOutputStream
import java.io.OutputStream
  
class MainActivity : AppCompatActivity() {
  
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
  
        // write permission to access the storage
        ActivityCompat.requestPermissions(this, arrayOf(Manifest.permission.WRITE_EXTERNAL_STORAGE), 1)
        ActivityCompat.requestPermissions(this, arrayOf(Manifest.permission.READ_EXTERNAL_STORAGE), 1)
  
        // this is the card view whose screenshot
          // we will take in this article
        // get the view using fin view bt id
        val cardView = findViewById(R.id.card_View)
  
        // on click of this button it will capture 
          // screenshot and save into gallery
        val captureButton = findViewById

输出:

Github仓库在这里

想要一个节奏更快,更具竞争性的环境来学习Android的基础知识吗?
单击此处前往由我们的专家精心策划的指南,以使您立即做好行业准备!