如何解决Android —截屏
| 我需要进行屏幕截图并保存屏幕截图。我需要在不使用任何与PC的连接或不拔出手机的情况下执行此操作。每当事件触发时,我都需要这样做。例如,当广告在游戏中显示时……或游戏结束并用蛇等显示分数时,您能告诉我我该怎么做。我看到一些陀螺,他们给了代码,但这似乎不起作用private void getScreen()
{
View content = findViewById(R.id.layoutRoot);
Bitmap bitmap = content.getDrawingCache();
File file = new File(\"/sdcard/test.png\");
try
{
file.createNewFile();
FileOutputStream ostream = new FileOutputStream(file);
bitmap.compress(CompressFormat.PNG,100,ostream);
ostream.close();
}
catch (Exception e)
{
e.printStackTrace();
}
}
解决方法
您能否提供更多有关运行该代码无效的信息?它不能捕获您想要的东西吗?它会崩溃吗?
确保您使用根布局正确更改了
R.id.layoutroot
...此外,看起来似乎可行...
<com.example.android.snake.SnakeView
android:id=\"@+id/snake\"
android:layout_width=\"match_parent\"
android:layout_height=\"match_parent\"
tileSize=\"24\"
/>
<RelativeLayout
android:layout_width=\"match_parent\"
android:layout_height=\"match_parent\" >
<TextView
android:id=\"@+id/text\"
android:text=\"@string/snake_layout_text_text\"
android:visibility=\"visible\"
android:layout_width=\"wrap_content\"
android:layout_height=\"wrap_content\"
android:layout_centerInParent=\"true\"
android:gravity=\"center_horizontal\"
android:textColor=\"#ff8888ff\"
android:textSize=\"24sp\"/>
</RelativeLayout>
编辑...
因此,例如,如果使用刚才放置的布局,则应将R.id.layout
更改为R.id.snake
,这是因为此行:android:id=\"@+id/snake\"
。
我不认为有一种简单的方法来查找/获取视图的“ root”布局的ID(如果您想获取手机显示内容的屏幕快照,请执行以下操作)。
我刚刚检查了启动器和另一个应用程序,似乎大多数应用程序都已放入具有ID /内容的FrameLayout中,因此您可以尝试使用android.R.id.content
,但没有保证每次都可以使用...
, 在调用getDrawingCache()之前,必须首先启用缓存。
, View ve = findViewById(R.id.loyout);
ve.setDrawingCacheEnabled(true);
Bitmap b = ve.getDrawingCache();
String extr = Environment.getExternalStorageDirectory().toString()
+ \"/SaveCapture\";
myPath = new File(extr);
if (!myPath.exists()) {
boolean result = myPath.mkdir();
Toast.makeText(this,result + \"\",Toast.LENGTH_SHORT).show();
}
myPath = new File(extr,getString(R.string.app_name) + \".jpg\");
Toast.makeText(this,myPath.toString(),Toast.LENGTH_SHORT).show();
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) {
Log.e(\"Error\",e + \"\");
}
catch (Exception e) {
Log.e(\"Error\",e + \"\");
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。