2012-05-08 7 views
0

私のアンドロイドアプリケーションでは、私は問題に固執しており、何も私のために働くようです。 私は、相対レイアウト内の別のImageViewの上にImageViewを持っています。 これで、ユーザーが角とドラッグのいずれかに触れるときに、イメージビューの上端をサイズ変更する必要があります。 クロッピングフレームのように一般的に見えます。いずれかのコーナーをドラッグすると、斜めに反対側のコーナーが固定されたままでなければならず、サイズ変更はドラッグされているコーナーを横切って行われなければなりません。 私がやっていることは、OnTouchListenerを設定し、Action.MOVE上に新しい/ドラッグした座標を取得してから、BitmapのcreateScaledBitmapを使ってサイズを変更しようとしました。これにより、画像ビューのサイズは変更されますが、ドラッグされているコーナーには適用されません。私は全く混乱している。 キャンバスを使用して矩形を描画するときのように、座標を使用してイメージビューを描画する方法。 助けてください。ImageViewのサイズを画像のトリミング枠のようにコーナーからドラッグして動的に変更するにはどうすればよいですか?

答えて

0

私はImageViewでこれをしません。 Viewをサブクラス化し、onTouchEventとonDrawをオーバーライドして入力を処理し、さまざまなコンポーネントをすべて描画します。これをコンポーネントに分割し、このビューでいくつかのオブジェクトを管理する必要があります。

トリミング領域のサイズを表すRectがあります。これはおそらくコントロールのサイズにデフォルト設定されています。 onTouchEventでは、各コーナーの周りの領域をテストし、Rectを適切にリサイズするためにどのコーナーがドラッグされているかを追跡する必要があります。

あなたが描画するたびにcreateScaledBitmapを呼び出す必要はありません。その時点でOutOfMemoryExceptionを扇動しているので、おそらくそうしないでください(ビットマップをあまりにもゆっくりクリーンアップして、これは何ですか)。コントロールが作成されたときにビットマップをデコードし、デスティネーションRectを使用してキャンバスに描画します。

多くのコードを書くことができますが、楽しいプロジェクトのように聞こえます。このようなコントロールを簡単にドロップする方法はありません(私が正しく理解している場合)。カスタムビュー内でタッチ、ドラッグ、および宛先矩形を管理する必要があります。

関連する問題