你是如何做到這一點的?如何在短暫點擊完成拖放操作後再次點擊按鈕時再次監聽?
我有一個按鈕。該按鈕有一個longclicklistener和一個clicklistener。在longclick監聽器內部,它具有拖放功能。
我試圖做到這一點..然而,經過長時間的點擊和拖放已經是成功的..按鈕,可以不再檢測短期和長期點擊,因爲它是在股票的拖放。你做這種邏輯有更好的設計嗎?謝謝。你怎麼能讓按鈕在拖放後聽點擊?
這就是我所做的。我希望我的程序在後臺運行,所以我確實使用了服務。
在OnCreate()
初始化我的視圖。
初始化我的按鈕(findbyview)。
添加一個長按和一個正常的點擊監聽器。
3.1在longclick上,將touchlistener添加到按鈕並將ondraglistener添加到視圖。
3.1.1拖放後,按鈕應該再次能聽到點擊。 (你怎麼能
做到這一點?
感謝您的幫助球員。我堅持。
這是我的代碼。
public class MainPowerAndVolumeService extends Service {
private ViewGroup mView;
private LayoutInflater inflater;
private ImageButton mainButton;
private Button testButton;
@Override
public IBinder
onBind(Intent intent) {
return null;
}
public void onCreate() {
super.onCreate();
/*This will make your window or layout to be overlay and of course you can click the buttons*/
WindowManager.LayoutParams params = new WindowManager.LayoutParams(
WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.TYPE_PHONE,
WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH
| WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH
| WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
PixelFormat.TRANSLUCENT
);
Log.d("tok", " Window Manager activated");
/*This will load the main.xml view through inflate*/
WindowManager wm = (WindowManager) getSystemService(WINDOW_SERVICE);
Log.d("tok", " Window Manager systemservice");
inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
mView = (ViewGroup) inflater.inflate(R.layout.main, null);
mainButton =(ImageButton) mView.findViewById(R.id.MainButton);
mainButton.setOnTouchListener(new MyTouchListener());
wm.addView(mView,params);
Log.d("tok", "add mview");
buttonListener();
}
public void buttonListener(){
mainButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(MainPowerAndVolumeService.this,
"ImageButton (selector) is clicked!",
Toast.LENGTH_SHORT).show();
}
});
mainButton.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
mView.findViewById(R.id.topRight).setOnDragListener(new MyDragListener());
mView.findViewById(R.id.topLeft).setOnDragListener(new MyDragListener());
mView.findViewById(R.id.bottomRight).setOnDragListener(new MyDragListener());
mView.findViewById(R.id.bottomLeft).setOnDragListener(new MyDragListener());
mainButton.setOnTouchListener(new MyTouchListener());
return false;
}
});
}
public void onDestroy(){
super.onDestroy();
((WindowManager) getSystemService(WINDOW_SERVICE)).removeView(mView);
}
}
您可以在拖放完成後移除偵聽器。郵政編碼,以便您可以得到更準確的答案。 –
好的,我會在這裏發佈我的代碼。 –