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

首頁 > 系統 > Android > 正文

Android實現屏幕截圖并保存截圖到指定文件

2019-12-12 00:29:04
字體:
來源:轉載
供稿:網友

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

注意要添加權限:

<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;  }    /**   * 獲取當前屏幕截圖,不包含狀態欄(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;  }}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 鄂伦春自治旗| 芒康县| 隆林| 宣化县| 尼勒克县| 曲阜市| 泸定县| 兴安盟| 武鸣县| 庆安县| 克山县| 赣州市| 广南县| 米林县| 岗巴县| 保山市| 白水县| 宿迁市| 城市| 上虞市| 乌苏市| 宁津县| 崇礼县| 冷水江市| 武义县| 政和县| 龙陵县| 蓝田县| 扶风县| 武功县| 宣威市| 阳春市| 蓬安县| 丘北县| 临澧县| 奉贤区| 马关县| 伊吾县| 兰溪市| 蕉岭县| 米林县|