タッチリスナーを使用してRelativeLayoutビューを移動しようとしています。タッチイベントリスナーでRelativeLayoutを移動すると、レイアウトのゆがみが発生します
レイアウトは確かに移動している間は、位置間を速く動いています。 は、これは私が私のコンソールに情報を記録しますConsoleクラスを作成したフルタッチリスナー
protected void touch(){
Mover manmove = new Mover();
Wall.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
final int action = motionEvent.getAction();
if(!isZooming()){
switch (action & MotionEvent.ACTION_MASK) {
//If The Screen is Tapped
case (MotionEvent.ACTION_UP):
case (MotionEvent.ACTION_DOWN):
//Setting the initial Touch point
setTouchDownX(motionEvent.getX());
setTouchDownY(motionEvent.getY());
break;
case (MotionEvent.ACTION_MOVE):
float my = getaY() + (motionEvent.getY() - getTouchDownY());
console.log(my);
// manmove.moveY(my);
break;
}
}
return true;
}
});
}
です。
manmove.moveY(my)コードが下にあります。
(上記のように)manmove.moveY()をコメントアウトすると、メソッドは実行されません。 Console.logは次のものを出力します(どちらが望ましい座標です)。
I/ViewRootImpl: ViewRoot's Touch Event : ACTION_DOWN
I/Console(Float):: 0.0
I/Console(Float):: 0.0
I/Console(Float):: -9.876221
I/Console(Float):: -22.249512
I/Console(Float):: -39.085938
I/Console(Float):: -58.50659
I/Console(Float):: -82.34204
I/Console(Float):: -101.75574
I/Console(Float):: -122.02234
I/Console(Float):: -141.76233
I/Console(Float):: -159.39001
I/Console(Float):: -174.78223
I/Console(Float):: -189.00647
I/Console(Float):: -202.30786
I/Console(Float):: -215.42957
I/Console(Float):: -229.95398
I/Console(Float):: -244.98132
I/Console(Float):: -258.14148
I/Console(Float):: -272.5271
わかりますように、それらは連続しているので、動きは滑らかでなければなりません。 私はmanmove.moveY(私の)
else{
//Allow Scrolling on FullView
float my = getaY() + (motionEvent.getY() - getTouchDownY());
console.log(my);
manmove.moveY(my);
}
を実行する場合、私はこの出力を取得します。
I/ViewRootImpl: ViewRoot's Touch Event : ACTION_DOWN
I/Console(Float):: 0.0
I/Console(Float):: 0.0
I/Console(Float):: 0.0
I/Console(Float):: -7.222168
I/Console(Float):: -86.498535
I/Console(Float):: -60.04187
I/Console(Float):: -125.71619
I/Console(Float):: -92.756226
I/Console(Float):: -152.55365
I/Console(Float):: -113.45459
I/Console(Float):: -178.72412
I/Console(Float):: -140.0473
I/Console(Float):: -206.31036
I/Console(Float):: -170.90485
I/Console(Float):: -222.82135
I/Console(Float):: -188.71191
I/Console(Float):: -234.86389
ご覧のとおり、出力は順不同です。あたかも2つの異なるイベントが起こっているかのように。なぜ私が(RelativeLayout方法によって壁である)
は、ここで私が解決
public class Mover extends Brain {
public Mover(){
}
public void moveX(float val){
Wall.setX(val);
}
public void moveY(float val){
Wall.setY(val);
}