Java imageview上的setOnClickListener
我有个问题,我解决不了 我正在使用一个浮动视图,如Facebook聊天头,我无法使Java imageview上的setOnClickListener,java,android,android-imageview,Java,Android,Android Imageview,我有个问题,我解决不了 我正在使用一个浮动视图,如Facebook聊天头,我无法使图像视图可单击以打开黑色新活动并关闭同一服务中的聊天头 这是我的FloatingViewService public class FloatingViewService extends Service { private WindowManager mWindowManager; private ImageView mImgFloatingView; private boolean mIs
图像视图
可单击以打开黑色新活动并关闭同一服务中的聊天头
这是我的FloatingViewService
public class FloatingViewService extends Service {
private WindowManager mWindowManager;
private ImageView mImgFloatingView;
private boolean mIsFloatingViewAttached = false;
@Override
public IBinder onBind(Intent intent) {
//Not use this method
return null;
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
if(!mIsFloatingViewAttached){
mWindowManager.addView(mImgFloatingView, n mImgFloatingView.getLayoutParams());
}
return super.onStartCommand(intent, flags, startId);
}
@Override
public void onCreate() {
super.onCreate();
mWindowManager = (WindowManager) getSystemService(WINDOW_SERVICE);
mImgFloatingView = new ImageView(this);
mImgFloatingView.setImageResource(R.mipmap.ic_launcher);
final WindowManager.LayoutParams params = new WindowManager.LayoutParams(
WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.TYPE_PHONE,
WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL,
PixelFormat.TRANSLUCENT);
params.gravity = Gravity.TOP | Gravity.LEFT;
mWindowManager.addView(mImgFloatingView, params);
mImgFloatingView.setOnTouchListener(new View.OnTouchListener() {
private int initialX;
private int initialY;
private float initialTouchX;
private float initialTouchY;
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
initialX = params.x;
initialY = params.y;
initialTouchX = event.getRawX();
initialTouchY = event.getRawY();
return true;
case MotionEvent.ACTION_UP:
return true;
case MotionEvent.ACTION_MOVE:
params.x = initialX + (int) (event.getRawX() - initialTouchX);
params.y = initialY + (int) (event.getRawY() - initialTouchY);
mWindowManager.updateViewLayout(mImgFloatingView, params);
return true;
}
return false;
}
});
mIsFloatingViewAttached = true;
mImgFloatingView.setClickable(true);
mImgFloatingView.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
Intent int1 = new Intent(FloatingViewService.this,CrniProzor.class);
startActivity(int1);
}
});
}
public void removeView() {
if (mImgFloatingView != null){
mWindowManager.removeView(mImgFloatingView);
mIsFloatingViewAttached = false;
}
}
@Override
public void onDestroy() {
Toast.makeText(getApplicationContext(), "onDestroy", Toast.LENGTH_SHORT);
super.onDestroy();
removeView();
}
}
`
和main活动
public class MainActivity extends ActionBarActivity implements View.OnClickListener{
private Button mBtnShowView;
private boolean mIsFloatingViewShow; //Flag variable used to identify if the Floating View is visible or not
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mBtnShowView = (Button)findViewById(R.id.btn_show_floating_view);
mBtnShowView.setOnClickListener(this);
mIsFloatingViewShow = false;
}
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.btn_show_floating_view:
if(mIsFloatingViewShow){
hideFloatingView();
mIsFloatingViewShow = false;
mBtnShowView.setText(R.string.show_floating_view);
}
else{
showFloatingView();
mIsFloatingViewShow = true;
mBtnShowView.setText(R.string.hide_floating_view);
}
break;
}
}
private void showFloatingView() {
startService(new Intent(getApplicationContext(), FloatingViewService.class));
}
private void hideFloatingView() {
stopService(new Intent(getApplicationContext(), FloatingViewService.class));
}
}
试试这个:
case MotionEvent.ACTION_UP:
if ((Math.abs(initialTouchX - event.getRawX()) < 5) && (Math.abs(initialTouchY - event.getRawY()) < 5)) {
Toast.makeText(FloatingViewService.this, "CLICK", Toast.LENGTH_SHORT).show();
}
return true;
case MotionEvent.ACTION\u UP:
if((Math.abs(initialTouchX-event.getRawX())<5)和&(Math.abs(initialTouchY-event.getRawY())<5)){
Toast.makeText(FloatingViewService.this,“CLICK”,Toast.LENGTH_SHORT.show();
}
返回true;