2013-07-31 13 views
8

私のアプリのユーザーは、実行時に画像を変更できるようにしたいと思います。私はこれを研究に多くの時間を費やしているAndroidでサイズ変更可能なImageViewを作成する方法

enter image description here

:ユーザーは、次の図に示すように、画像ビューのコーナーをタップし、それをドラッグすることで、画像の高さと幅を変更することができるはずです私はMaking Sense of Multitouch Resize a large bitmap file to scaled output fileピンチズームのようなものを見つけましたが、これらのどれも私の要求とはまったく一致しません。

現在、私はビットマップのサイズを変更しており、フレームの代わりにシークバーのonprogress変更メソッドの下でこの機能を使用して幅を変更しています。この機能を使用することにより、イメージサイズが変化してもスムーズに動作しません。

public static Bitmap decodeFile(File f,int WIDTH,int HIGHT){ 

    try { 
     //Decode image size 
     BitmapFactory.Options o = new BitmapFactory.Options(); 
     o.inJustDecodeBounds = true; 
     BitmapFactory.decodeStream(new FileInputStream(f),null,o); 

     //The new size we want to scale to 
     final int REQUIRED_WIDTH=WIDTH; 
     final int REQUIRED_HIGHT=HIGHT; 

     //Find the correct scale value. It should be the power of 2. 
     int scale=1; 
     while(o.outWidth/scale/2>=REQUIRED_WIDTH && o.outHeight/scale/2>=REQUIRED_HIGHT) 
      scale*=2; 

     //Decode with inSampleSize 
     BitmapFactory.Options o2 = new BitmapFactory.Options(); 
     o2.inSampleSize=scale; 
     return BitmapFactory.decodeStream(new FileInputStream(f), null, o2); 
    } 
     catch (FileNotFoundException e) {} 
    return null; 

} 

UPDATE:

今すぐthis質問の受け入れ答えを使用してキャンバスに描画するビットマップを使用してスムーズに作業。

現在、リーミング部分は、フレーム周りの画像です。

これを達成するために手伝ってください。

+0

こんにちは行われ、私はチュートリアルを見ましたが、私はあなたを聞いてみましょうこの:ポイントは、両側に位置していますXまたはY軸の移動のみを許可する画像のもしそうなら、あなたは '/ /移動距離を計算する'部分のX軸やY軸のイメージを単純にサイズ変更し、これを 'ImageView'に更新するコードのセクションに置くことはできませんか? – g00dy

+0

ポイントは配置されていません。このフレームは、再スケーリング後にイメージサイズごとに表示されます。このフレームは、イメージの周りに常に動的に生成される必要があります。私は質問画像を変更しました。 plzはこの新しいイメージをチェックします。ありがとう... –

+0

ポイントのある部分はすでに完了していると思いますか?あなたはこれのために何かをやったことがありますか? – g00dy

答えて

1

あなたは、これがこのlibrary使用cropimageview3を使用し、フロート描画可能で、あなたのイメージを設定し達成することができますし、

1

「あなたは間違っている」

  1. リサイズImageView自体:代わりにするたびに新しいBitmap作成の

    は、あなたはいくつかのオプションがあります。

  2. Viewを独自に作成し、Canvasを使用してビットマップを描画します。これにより、希望通りにBtimapを伸ばすことができます。

もしあなたがCanvasと一緒に行くなら、それらの "切り抜きポイント"を表示するにはキャンバス上に描画することもできます。 Althoughtは、望ましい行動と外観を達成するために、あなたはおそらく同様に、これらのメソッドをオーバーライドする必要があります。

  1. onTouchEvent - あなたのサイズ変更動作を処理するために、ユーザは、作物のポイントに触れたとき。
  2. onMeasure - 「クロップポイント」がわずかに画像から外れているため、Viewのサイズが少し大きくなります。
+0

おかげで、私は滑らかさが得られます。私は今キャンバスを使用しています。また、画像を切り抜くようなフレームに関する提案もあります。 –

+0

@SanketKachhela編集の回答を参照してください –

+0

ありがとう私は実装しています。 –

関連する問題