2017-09-05 9 views
0

私は、最初に(長いタッチで)コントロールを選択してから、コーナー(またはエッジ)の1つをドラッグしてそれに応じてサイズを変更することによって、ビューのサイズを変更させたいと思っています。Androidビューのエッジやコーナーをドラッグしてサイズを変更するにはどうすればよいですか?

私はコントロール部分をカバーしていますが、このメカニカルを最初から作成しなければならない他に、このサイズ変更を行うことができる何かがあるかどうかを知りたいと思います。 onLongClickメソッドをオーバーライドすることで、ユーザーがビューをドラッグしたときにビューが既に変換されていると付け加えるべきです。

現在、ほとんどのアプリでは「切り取り」機能のようなものがあり、サイズ変更されたものだけがサイズ変更されます。ここでエッジが「ドラッグ」している例があります:私はあなたがクロッパーを構築するために必要な画像から何を得る

Example of the resize mechanics

答えて

2

。オーバーレイを描画するフレームはviewです。したがって、ViewのonTouch()をオーバーライドし、ビューを新しいポイントとサイズで無効にします。

@Override 
public boolean onTouchEvent(MotionEvent event) { 
    switch (event.getAction()) { 
     case MotionEvent.ACTION_DOWN: 
      // check for the point 
      // 1.if its exist inside the frame then move the frame on action move 
      // 2. if its on edges then reassign the size of frame and invalidate your View 
      // 3. if Outside the frame just ignore it 
      onDown(event); 
      return true; 
     case MotionEvent.ACTION_MOVE: 
      // Move your view here i.e assign new points and size as per event 
      invalidate(); 
      return true; 
     case MotionEvent.ACTION_CANCEL: 

      return true; 
     case MotionEvent.ACTION_UP: 

      return true; 
    } 
    return false; 
} 
+0

だから、「オーバーレイ」などのクラスを作成し、エッジに触れるとオーバーレイをビューの上に作成する必要がありますか? 編集:上記のことを忘れてしまった。私はあなたが言っているものを持っている、問題は私のビューも移動されます。したがって、View自体に「移動」リスナーを持たせることはできません。私は "ポイント"を作成してそのリスナーを割り当て、各ポイントをコーナーに置くと思います。 – jazzchipc

+0

代わりに、サードパーティのクロッパー・ライブラリーを使用することをお勧めします。これらは既に最適化されており、不足することなく動作するからです。コードを理解して自分自身を構築することができます。驚くべきコーダーによって既に構築されたgithubにはたくさんのものがあり、いくつかのものはSingle .JavaファイルのみでCharmのように機能します。 – ADM

関連する問題