关于截图相关的都是照搬的
这个是截图,取到图片之后把界面里面的绿色都替换成白色
private Bitmap getBitmap(Activity activity, int x, int y, int width, int hight){
View view = activity.getWindow().getDecorView();
view.setDrawingCacheEnabled(true);
view.buildDrawingCache();
PrintBitmap = view.getDrawingCache();
PrintBitmap = Bitmap.createBitmap(PrintBitmap,x,y,width,hight);
PrintBitmap = replaceBitmapColor(PrintBitmap, -16738486, -131587);
String dir = Environment.getExternalStorageDirectory().getAbsolutePath();
try{
FileOutputStream fout = new FileOutputStream("/storage/emulated/0/test.png");
PrintBitmap.compress(Bitmap.CompressFormat.PNG,100,fout);
// Bitmap rebitmap = replaceBitmapColor(PrintBitmap, android.R.color.white, android.R.color.holo_red_dark);
Toast.makeText(jiboba.this,"截图成功",Toast.LENGTH_SHORT).show();
} catch (FileNotFoundException e) {
Toast.makeText(jiboba.this,"文件保存失败",Toast.LENGTH_LONG).show();
e.printStackTrace();
}
view.setDrawingCacheEnabled(false);
return PrintBitmap;
}
这些事动态添加view的
public void AddPointToTarget(byte[] cmd){
bulletview[bulletNum] = new ImageView(getApplicationContext());
bulletview[bulletNum].setImageResource(R.drawable.bullet);
byte[] bytes = new byte[4];
bytes[3] = cmd[14];
bytes[2] = cmd[15];
x_pos = byteArrayToInt(bytes);
bytes[3] = cmd[16];
bytes[2] = cmd[17];
y_pos = byteArrayToInt(bytes);
LayoutInflater.from(this).inflate(R.layout.activity_jiboba,null); //加载View视图,这个就是我们要显示的内容
// WindowManager windowManager = (WindowManager) getApplicationContext().getSystemService(Context.WINDOW_SERVICE); //获取WindowManage
WindowManager.LayoutParams layoutParams = new WindowManager.LayoutParams(); //设置LayoutParams的属性
layoutParams.type = WindowManager.LayoutParams.TYPE_APPLICATION_PANEL; //该Type描述的是形成的窗口的层级关系,下面会详细列出它的属性
layoutParams.flags = WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL | //该flags描述的是窗口的模式,是否可以触摸,可以聚焦等
WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE;
layoutParams.gravity = Gravity.LEFT|Gravity.BOTTOM; //设置窗口的位置
layoutParams.format = PixelFormat.TRANSLUCENT; //不设置这个弹出框的透明遮罩显示为黑色
layoutParams.width = 30;//WindowManager.LayoutParams.MATCH_PARENT; //窗口的宽
layoutParams.height = 30;//WindowManager.LayoutParams.MATCH_PARENT; //窗口的高
layoutParams.x = (x_pos * 860 / 500) + 48 - 15;
layoutParams.y = (y_pos * 855 / 500) + 195 + 15;
layoutParams.token = ((View)findViewById(R.id.ShootPosPic)).getWindowToken(); //获取当前Activity中的View中的TOken,来依附Activity,因为设置了该值,纳闷写的这些代码不能出现在onCreate();否则会报错。
windowManager.addView(bulletview[bulletNum],layoutParams);
bulletNum++;
ArrayNum++;
}
通过button触发
img.setImageBitmap(getBitmap(jiboba.this,30,50,PicWidth/2-50,PicHight-150));
有没有大佬提供下思路的
没人啊
1、确定view能拿到图片;
2、确定修改颜色后能拿到图片;
3、确定权限;
4、确定代码是正确。
一步一步来肯定可以的。我能截图,但是没有改颜色的功能。
还没搞定,有没有大佬指点下的