좋아, 이제 며칠 동안 내 앱에서 제스처로 작업했습니다. 모든 것은 기본 스톱워치 애플리케이션이며 카운트 다운 애플리케이션은 스 와이프 가능한 뷰를 사용하여 2 가지 다른 활동을 교환합니다.onDoubleTapListener를 텍스트보기에 첨부하십시오.
내 문제는 app의 stopWatch 부분에 대한 첫 번째 단편입니다. 실행 가능한 타이머를 만들고 시작하는 타이머가 있습니다. 사용자가 타이머 텍스트보기를 탭하면 현재 설정되어 있습니다. 실행 파일을 시작하면 타이머가 카운트를 시작합니다. 그러나 내가 설정 한 방법은 단일 탭인 하나의 입력 방법 만 허용 할 수 있습니다. 이것은 제스처가 들어오는 곳입니다. 타이머를 시작하려면 한 번 클릭하고, 타이머를 일시 중지하려면 두 번 살짝 누르고, 타이머 텍스트보기를 중지하고 지우려면 길게 누릅니다.
제스처 탐지기를 TextView에 연결하려고 시도했지만 아무 것도 작동하지 않는 것 같아요. 조각을 설정할 수 있다고 생각합니다. 화면의 아무 곳이나 클릭하면 내가 할 수 있다고 생각합니다. 소원하지만 나는 그런 식으로 일하기를 원하지 않아. 사용자가 타이머 텍스트보기를 클릭 할 때만 작동되기를 원합니다. 나는 그것이 작동하도록 할 수 있다고 생각했지만, 그것은 TextView에 onDoubleTapListener를 두는 것과 관련이 있습니다. 그러나 어떤 이유로 그것을 할 수 없기 때문에, 누군가는 저를 위해 또는 그 방법을 사용할 수있는 방법을 가지고 있습니다. 코드가 작동합니까? 사람이 :)
아래는 내 코드입니다 수 있도록하는
긴 설명을 드려 죄송하지만 난 내가 원하는 걸에 있습니다 더 많은 정보를 파악, 쉽게 그것을 것, 내가 너무 보이지 않는 알고 (내가 일하려고하는 것 같은) 조직되었지만 잘하면 내가 잘못 될 곳을 볼 수있다. 감사!
(일부보기는 순식간에 한 번에 한 단계 씩 작업하기 때문에 전혀 사용되지 않습니다. P는 주석 처리 된 코드의 일부이며 현재 방식입니다. 나는 내가 현재 타이머를 시작하고 어떻게 여기 경우에 누군가가 궁금해 그것을 떠날 거라고 생각 타이머를 실행하는거야.) 내가 그렇게 간단 문제를 파악
package com.leccles.swipetabs;
import android.os.Bundle;
import android.os.Handler;
import android.support.v4.app.Fragment;
import android.support.v4.view.GestureDetectorCompat;
import android.view.GestureDetector;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.ListView;
import android.widget.TextView;
/**
* A simple {@link android.support.v4.app.Fragment} subclass.
*
*/
public class FragmentA extends Fragment implements
GestureDetector.OnGestureListener, GestureDetector.OnDoubleTapListener {
Button lapButton;
TextView timerText;
ListView lapListView;
TextView mMilliTextView;
String milliText;
long startTime = 0;
long timeInMilliSeconds = 0;
GestureDetectorCompat gDetector;
Handler timerHandler = new Handler();
Runnable timerRunnable = new Runnable() {
@Override
public void run() {
long millis = System.currentTimeMillis() - startTime;
int seconds = (int) (millis/1000);
int minutes = seconds/60;
seconds = seconds % 60;
timerText.setText(String.format("%d:%02d", minutes, seconds));
timerHandler.postDelayed(this, 500);
}
};
public FragmentA() {
// Required empty public constructor
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
// Inflate the layout for this fragment
mMilliTextView = (TextView) getView().findViewById(R.id.milliTextView);
lapButton = (Button) getView().findViewById(R.id.lapButton);
timerText = (TextView) getView().findViewById(R.id.timerText);
lapListView = (ListView) getView().findViewById(R.id.lapListView);
this.gDetector = new GestureDetectorCompat(getActivity(), this);
timerText.setOnDoubleTapListener(this);
/*
* timerText.setOnClickListener(new View.OnClickListener() {
*
* @Override public void onClick(View v) { TextView timerText =
* (TextView) v; if (timerText.getText().equals(
* getView().findViewById(R.string.stopWatchTime))) {
* timerHandler.removeCallbacks(timerRunnable);
*
* } else {
*
* startTime = System.currentTimeMillis();
* timerHandler.postDelayed(timerRunnable, 0);
*
* }
*
* }
*
* });
*/
}
@Override
public boolean onSingleTapConfirmed(MotionEvent e) {
// TODO Auto-generated method stub
return true;
}
@Override
public boolean onDoubleTap(MotionEvent e) {
// TODO Auto-generated method stub
return true;
}
@Override
public boolean onDoubleTapEvent(MotionEvent e) {
// TODO Auto-generated method stub
return true;
}
@Override
public boolean onDown(MotionEvent e) {
// TODO Auto-generated method stub
return true;
}
@Override
public void onShowPress(MotionEvent e) {
// TODO Auto-generated method stub
}
@Override
public boolean onSingleTapUp(MotionEvent e) {
// TODO Auto-generated method stub
return true;
}
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,
float distanceY) {
// TODO Auto-generated method stub
return true;
}
@Override
public void onLongPress(MotionEvent e) {
// TODO Auto-generated method stub
}
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
float velocityY) {
// TODO Auto-generated method stub
return true;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// TODO Auto-generated method stub
return inflater.inflate(R.layout.fragment_a, container, false);
}
}