【问题标题】:how to take a screen shot on a button click can anyone provide a android code如何在单击按钮时截屏任何人都可以提供android代码
【发布时间】:2021-04-14 00:41:58
【问题描述】:

我想在单击按钮时拍摄当前屏幕的屏幕截图。谁能提供一个android代码。我还需要将图像保存在图库中。这是我尝试过的

public class CaptureScreenShots extends Activity {
LinearLayout L1;
ImageView image;
 @Override
     protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.screen_shots);
    L1 = (LinearLayout) findViewById(R.id.LinearLayout01);
    Button but = (Button) findViewById(R.id.munchscreen);
    but.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            View v1 = L1.getRootView();
            v1.setDrawingCacheEnabled(true);
            Bitmap bm = v1.getDrawingCache();
            BitmapDrawable bitmapDrawable = new BitmapDrawable(bm);
            image = (ImageView) findViewById(R.id.screenshots);
            image.setBackgroundDrawable(bitmapDrawable);
        }
    });
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.screen_shots, menu);
    return true;
}

}

【问题讨论】:

  • 我投票决定将此问题作为题外话结束,因为“我可以使用代码吗?”问题是题外话。请告诉我们你做了什么。
  • 公共类 CaptureScreenShots 扩展 Activity { LinearLayout L1; ImageView 图像; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.screen_shots); L1 = (LinearLayout) findViewById(R.id.LinearLayout01); Button but = (Button) findViewById(R.id.munchscreen); but.setOnClickListener(new OnClickListener() {
  • @Override public void onClick(View v) { View v1 = L1.getRootView(); v1.setDrawingCacheEnabled(true);位图 bm = v1.getDrawingCache(); BitmapDrawable bitmapDrawable = new BitmapDrawable(bm); image = (ImageView) findViewById(R.id.screenshots); image.setBackgroundDrawable(bitmapDrawable); } }); }
  • 我是初学者,抱歉我的错误@Little Child

标签: android


【解决方案1】:

设置按钮点击监听器

share = (Button)findViewById(R.id.share);
share.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Bitmap bitmap = takeScreenshot();
        saveBitmap(bitmap);

    }
});

那么你必须创建两个方法

public Bitmap takeScreenshot() {
View rootView = findViewById(android.R.id.content).getRootView();
rootView.setDrawingCacheEnabled(true);
return rootView.getDrawingCache();
}

public void saveBitmap(Bitmap bitmap) {
File imagePath = new File(Environment.getExternalStorageDirectory() + "/screenshot.png");
FileOutputStream fos;
try {
    fos = new FileOutputStream(imagePath);
    bitmap.compress(Bitmap.CompressFormat.PNG, 100, fos);
    fos.flush();
    fos.close();
} catch (FileNotFoundException e) {
    Log.e("GREC", e.getMessage(), e);
} catch (IOException e) {
    Log.e("GREC", e.getMessage(), e);
}
}

将此代码添加到您的应用程序后,运行该应用程序并检查您的本地存储,您已经创建了整个页面的屏幕截图。

【讨论】:

  • 简单明了的回答。
【解决方案2】:
 private void getScreen(){
            View v = view.getRootView();
            v.setDrawingCacheEnabled(true);
            Bitmap b = v.getDrawingCache();
            String extr = Environment.getExternalStorageDirectory().toString();
            File myPath = new File(extr, getString(R.string.free_tiket)+".jpg");
            FileOutputStream fos = null;
            try {
            fos = new FileOutputStream(myPath);
            b.compress(Bitmap.CompressFormat.JPEG, 100, fos);
            fos.flush();
            fos.close();
            MediaStore.Images.Media.insertImage( getContentResolver(), b, "Screen", "screen");
            } catch (FileNotFoundException e) {
               e.printStackTrace();
            } catch (Exception e) {
               e.printStackTrace();
        }
}

【讨论】:

  • 它会自动将照片保存到我们的记忆中
  • 没有。您必须手动实施。首先以编程方式创建一个文件夹,然后指定要存储图片的路径。
  • 您可以将路径保存在手机中的任何位置,当您需要该图像时调用图像路径并将图像路径更改为位图并应用于 imageView
  • 这会将状态栏捕获为白色
【解决方案3】:

我遵循了您的代码,当我单击按钮时,图像将存储为黑屏,因为我使用 Surfaceview 自定义相机开发...如何将完整的图像保存在本地存储中。

【讨论】:

    猜你喜欢
    • 2010-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-18
    • 1970-01-01
    • 2016-07-27
    • 1970-01-01
    相关资源
    最近更新 更多