我正在尝试创建一个新的透明活动/服务,以便始终检测屏幕上的长按,这不会干扰用户除了长按之外的常用触摸。到目前为止,我已经能够做到这一点:
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
this.getWindow().setFlags(
WindowManager.LayoutParams.TYPE_INPUT_METHOD
| WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL
| WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH,PixelFormat.TRANSPARENT);
//this.getWindow().setFormat(PixelFormat.TRANSLUCENT);
View myview = GestureOverlayView.inflate(getApplicationContext(),
R.layout.traslucent, null);
setContentView(myview);
myview.setOnTouchListener(this);
}
这只是为了测试而不是实际的长按。
@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
Toast.makeText(this, "Click", Toast.LENGTH_LONG).show();
finish();
return true;
}
我能够检测到活动背后的触摸(正如我想的那样)并且吐司没有显示出来。但是除了我放在那里的云外,屏幕是黑色的。我需要让它透明,怎么做?
答案 0 :(得分:0)
您的styles.xml文件中需要一个透明的活动主题。像这样:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="Theme.Transparent" parent="android:Theme">
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowIsFloating">true</item>
<item name="android:backgroundDimEnabled">false</item>
</style>
</resources>
然后,在您的AndroidManifest.xml文件中
<activity
android:name=".MyActivity"
android:theme="Theme.Transparent"
... />