成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

Android如何實(shí)現(xiàn)屏幕截圖并保存截圖到指定文件

這篇文章主要介紹Android如何實(shí)現(xiàn)屏幕截圖并保存截圖到指定文件,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!

創(chuàng)新互聯(lián)是一家專(zhuān)業(yè)提供鐵東企業(yè)網(wǎng)站建設(shè),專(zhuān)注與成都做網(wǎng)站、成都網(wǎng)站建設(shè)、H5高端網(wǎng)站建設(shè)、小程序制作等業(yè)務(wù)。10年已為鐵東眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專(zhuān)業(yè)的建站公司優(yōu)惠進(jìn)行中。

Android屏幕截圖并保存截取屏幕的圖片到指定文件,具體內(nèi)容如下

注意要添加權(quán)限:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

完整代碼:

package zhangphil.test;
 
import android.app.Activity;
import android.content.Context;
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.os.Environment;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.util.DisplayMetrics;
import android.view.View;
import android.widget.Toast;
 
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
 
public class JavaActivity extends AppCompatActivity {
 
  @Override
  protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.drawable_activity);
 
    AppCompatActivity activity = this;
 
    findViewById(R.id.button).setOnClickListener(new View.OnClickListener() {
      @Override
      public void onClick(View v) {
        File file = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), "zhangphil.jpg");
        Bitmap bitmap = screenShot(activity);
        try {
          if (!file.exists())
            file.createNewFile();
 
          boolean ret = save(bitmap, file, Bitmap.CompressFormat.JPEG, true);
          if (ret) {
            Toast.makeText(getApplicationContext(), "截圖已保持至 " + file.getAbsolutePath(), Toast.LENGTH_SHORT).show();
          }
        } catch (Exception e) {
          e.printStackTrace();
        }
      }
    });
  }
 
  /**
   * 保存圖片到文件File。
   *
   * @param src   源圖片
   * @param file  要保存到的文件
   * @param format 格式
   * @param recycle 是否回收
   * @return true 成功 false 失敗
   */
  public static boolean save(Bitmap src, File file, Bitmap.CompressFormat format, boolean recycle) {
    if (isEmptyBitmap(src))
      return false;
 
    OutputStream os;
    boolean ret = false;
    try {
      os = new BufferedOutputStream(new FileOutputStream(file));
      ret = src.compress(format, 100, os);
      if (recycle && !src.isRecycled())
        src.recycle();
    } catch (IOException e) {
      e.printStackTrace();
    }
 
    return ret;
  }
 
 
  /**
   * 獲取當(dāng)前屏幕截圖,不包含狀態(tài)欄(Status Bar)。
   *
   * @param activity activity
   * @return Bitmap
   */
  public static Bitmap screenShot(Activity activity) {
    View view = activity.getWindow().getDecorView();
    view.setDrawingCacheEnabled(true);
    view.buildDrawingCache();
    Bitmap bmp = view.getDrawingCache();
    int statusBarHeight = getStatusBarHeight(activity);
    int width = (int) getDeviceDisplaySize(activity)[0];
    int height = (int) getDeviceDisplaySize(activity)[1];
 
    Bitmap ret = Bitmap.createBitmap(bmp, 0, statusBarHeight, width, height - statusBarHeight);
    view.destroyDrawingCache();
 
    return ret;
  }
 
  public static float[] getDeviceDisplaySize(Context context) {
    Resources resources = context.getResources();
    DisplayMetrics dm = resources.getDisplayMetrics();
    int width = dm.widthPixels;
    int height = dm.heightPixels;
 
    float[] size = new float[2];
    size[0] = width;
    size[1] = height;
 
    return size;
  }
 
  public static int getStatusBarHeight(Context context) {
    int height = 0;
    int resourceId = context.getResources().getIdentifier("status_bar_height", "dimen", "android");
    if (resourceId > 0) {
      height = context.getResources().getDimensionPixelSize(resourceId);
    }
 
    return height;
  }
 
  /**
   * Bitmap對(duì)象是否為空。
   */
  public static boolean isEmptyBitmap(Bitmap src) {
    return src == null || src.getWidth() == 0 || src.getHeight() == 0;
  }
}

以上是“Android如何實(shí)現(xiàn)屏幕截圖并保存截圖到指定文件”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

本文標(biāo)題:Android如何實(shí)現(xiàn)屏幕截圖并保存截圖到指定文件
網(wǎng)站路徑:http://jinyejixie.com/article22/ipijjc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站建設(shè)、小程序開(kāi)發(fā)、用戶(hù)體驗(yàn)全網(wǎng)營(yíng)銷(xiāo)推廣、Google、微信小程序

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)
商都县| 增城市| 木里| 安新县| 额敏县| 高要市| 区。| 隆林| 沈阳市| 泰顺县| 五寨县| 辽中县| 太原市| 辽中县| 嘉峪关市| 平湖市| 太原市| 苗栗市| 潜江市| 宁国市| 库尔勒市| 景洪市| 南开区| 宁南县| 南岸区| 盐城市| 溆浦县| 韩城市| 集安市| 廉江市| 武功县| 汽车| 西乌珠穆沁旗| 长沙市| 陆川县| 比如县| 乌兰浩特市| 城固县| 勐海县| 驻马店市| 来宾市|