最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2018年10月26日 10:43:26   作者:zhangphil  
這篇文章主要為大家詳細介紹了Android實現(xiàn)屏幕截圖并保存截取圖片到指定文件,具有一定的參考價值,感興趣的小伙伴們可以參考一下

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

注意要添加權限:

<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;
  }
 
 
  /**
   * 獲取當前屏幕截圖,不包含狀態(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對象是否為空。
   */
  public static boolean isEmptyBitmap(Bitmap src) {
    return src == null || src.getWidth() == 0 || src.getHeight() == 0;
  }
}

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • 一文詳解Android?FCM接入

    一文詳解Android?FCM接入

    這篇文章主要為大家介紹了Android?FCM接入詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-03-03
  • Android開發(fā)自學路線圖

    Android開發(fā)自學路線圖

    這篇文章主要介紹了Android開發(fā)自學路線圖,本文講解的路線圖分為JAVA、Android基礎、Web基礎、Android項目4部份,是一個入門級學習路線圖,需要的朋友可以參考下
    2015-04-04
  • 詳解Android 華為凹口屏適配小結

    詳解Android 華為凹口屏適配小結

    這篇文章主要介紹了Android 華為凹口屏適配小結,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-02-02
  • Android自定義View實現(xiàn)圓環(huán)交替效果

    Android自定義View實現(xiàn)圓環(huán)交替效果

    這篇文章給大家介紹如何基于Android自定義View實現(xiàn)圓環(huán)交替的效果,實現(xiàn)后效果很贊,有需要的小伙伴們可以參考借鑒。
    2016-08-08
  • Jetpack Compose之選擇器使用實例講解

    Jetpack Compose之選擇器使用實例講解

    這篇文章主要介紹了Jetpack Compose之選擇器使用,選擇器主要是指Checkbox復選框,單選開關Switch,滑桿組件Slider等用于提供給用戶選擇一些值和程序交互的組件,比如像復選框Checkbox,可以讓用戶選擇一個或者多個選項
    2023-04-04
  • Flutter下Android Studio配置gradle的方法

    Flutter下Android Studio配置gradle的方法

    這篇文章主要介紹了Flutter下Android Studio配置gradle的方法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-04-04
  • 一文帶你看懂Android Application啟動流程是怎樣的

    一文帶你看懂Android Application啟動流程是怎樣的

    談到Android Application的啟動流程,很多文章都是各種源碼類和方法的一堆調(diào)用關系,這樣的文章就算看一百遍,也只是云里霧里。源碼得看,但是最好不要一下子深陷到源碼的細節(jié)之中,不可自拔。這里站在前人的基礎之上做一個總結
    2021-10-10
  • Android實現(xiàn)注冊頁面

    Android實現(xiàn)注冊頁面

    這篇文章主要為大家詳細介紹了Android實現(xiàn)注冊頁面之監(jiān)聽器,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • Android實現(xiàn)淘寶底部圖標導航欄

    Android實現(xiàn)淘寶底部圖標導航欄

    這篇文章主要為大家詳細介紹了Android實現(xiàn)淘寶底部圖標導航欄,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-12-12
  • Android使用多線程進行網(wǎng)絡聊天室通信

    Android使用多線程進行網(wǎng)絡聊天室通信

    這篇文章主要為大家詳細介紹了Android使用多線程進行網(wǎng)絡聊天室通信,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-10-10

最新評論

桂平市| 卓尼县| 溆浦县| 镇雄县| 吴旗县| 岑溪市| 甘洛县| 祥云县| 淮阳县| 鄂伦春自治旗| 日喀则市| 沙雅县| 丽江市| 伊川县| 营口市| 永德县| 衡阳县| 繁峙县| 南充市| 缙云县| 吉木萨尔县| 天气| 富源县| 上杭县| 镇坪县| 衡阳市| 中西区| 金湖县| 大方县| 阿拉善左旗| 琼海市| 宜兰市| 漳平市| 靖远县| 新民市| 高青县| 潼关县| 南涧| 九台市| 常宁市| 茂名市|