国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統(tǒng) > Android > 正文

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

2019-10-21 21:37:07
字體:
供稿:網(wǎng)友

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;  }    /**   * 獲取當前屏幕截圖,不包含狀態(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)容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網(wǎng)。


注:相關(guān)教程知識閱讀請移步到Android開發(fā)頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 共和县| 瑞昌市| 五指山市| 新疆| 永州市| 青河县| 木兰县| 伽师县| 蒙山县| 武强县| 启东市| 丰城市| 通山县| 淳化县| 巧家县| 枣庄市| 汽车| 禄丰县| 铁岭市| 涿州市| 石嘴山市| 邵阳市| 舟山市| 青河县| 桐庐县| 广东省| 长治市| 漳平市| 岑溪市| 德庆县| 腾冲县| 渝北区| 武定县| 额敏县| 伽师县| 长岭县| 习水县| 呼和浩特市| 盈江县| 元谋县| 德保县|