При перемещении слева направо плавно откройте камеру слева от экрана. Как этого добиться?
Я работаю над камерой, которая включает жесты слева направо, она открывает камеру. Но камера работает не совсем гладко, а также открывается справа от экрана.
Что я должен сделать, чтобы открыть его слева, а также плавно?
Ниже приведен код, который я использую,
class SwipeGestureListener extends GestureDetector.SimpleOnGestureListener implements
View.OnTouchListener {
Context context;
GestureDetector gDetector;
static final int SWIPE_MIN_DISTANCE = 120;
static final int SWIPE_MAX_OFF_PATH = 250;
static final int SWIPE_THRESHOLD_VELOCITY = 200;
public SwipeGestureListener() {
super();
}
public SwipeGestureListener(Context context) {
this(context, null);
}
public SwipeGestureListener(Context context, GestureDetector gDetector) {
if (gDetector == null)
gDetector = new GestureDetector(context, this);
this.context = context;
this.gDetector = gDetector;
}
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
float velocityY) {
try{
if (Math.abs(velocityX) < SWIPE_THRESHOLD_VELOCITY) {
return false;
}
if (e1.getX() - e2.getX() > SWIPE_MIN_DISTANCE) {
Toast.makeText(HomeActivity.this,
"swipe RightToLeft ", Toast.LENGTH_SHORT).show();
} else if ((e2.getX() - e1.getX() > SWIPE_MIN_DISTANCE&&e2.getY()-e1.getY()<100)&&e1.getX()<30) {
if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
askForcameraPermission();
} else {
startCamera();
}
}
}catch(Exception e){
}
return super.onFling(e1, e2, velocityX, velocityY);
}
@Override
public boolean onTouch(View v, MotionEvent event) {
return gDetector.onTouchEvent(event);
}
public GestureDetector getDetector() {
return gDetector;
}
}
class MyGestureDetector extends GestureDetector.SimpleOnGestureListener {
private static final int SWIPE_MIN_DISTANCE = 20;
private static final int SWIPE_MAX_OFF_PATH = 250;
private static final int SWIPE_THRESHOLD_VELOCITY = 10;
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
try {
if (Math.abs(e1.getY() - e2.getY()) > SWIPE_MAX_OFF_PATH)
return false;
// right to left swipe
if(e1.getX() - e2.getX() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
} else if (e2.getX() - e1.getX() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
askForcameraPermission();
} else {
startCamera();
}
}
} catch (Exception e) {
// nothing
}
return false;
}
@Override
public boolean onDown(MotionEvent e) {
return true;
}
@Override
public void onShowPress(MotionEvent e) {
}
@Override
public boolean onSingleTapUp(MotionEvent e) {
return false;
}
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
return false;
}
@Override
public void onLongPress(MotionEvent e) {
}
}
Моя ссылка с приложением Instagram, где оно открывает камеру слева направо.