私はユーザーが画像に触れることを可能にしようとしています。そして、基本的に、画像上の特定の領域をよりよく選択できる円柱状の拡大鏡が表示されます。ユーザがタッチを離すと、拡大部分は消滅する。これはいくつかの写真編集アプリで使用されています。私は自分のバージョンを実装しようとしています。私は以下のコードは、画像ビューの円形部分を拡大しますが、指を離すとズームを消去または消去しません。現在、canvas = new Canvas(bitMap);
を使用してキャンバスにビットマップを設定し、takenPhoto.setImageBitmap(bitMap);
を使用してイメージビューを設定しています。正しい方法を検討しているかどうかはわかりません。 onTouchコードは次のとおりです。Android - 画像の一部を円形に拡大/拡大する方法は?
zoomPos = new PointF(0,0);
takenPhoto.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
int action = event.getAction();
switch (action) {
case MotionEvent.ACTION_DOWN:
zoomPos.x = event.getX();
zoomPos.y = event.getY();
matrix.reset();
matrix.postScale(2f, 2f, zoomPos.x, zoomPos.y);
shader.setLocalMatrix(matrix);
canvas.drawCircle(zoomPos.x, zoomPos.y, 20, shaderPaint);
takenPhoto.invalidate();
break;
case MotionEvent.ACTION_MOVE:
zoomPos.x = event.getX();
zoomPos.y = event.getY();
matrix.reset();
matrix.postScale(2f, 2f, zoomPos.x, zoomPos.y);
canvas.drawCircle(zoomPos.x, zoomPos.y, 20, shaderPaint);
takenPhoto.invalidate();
break;
case MotionEvent.ACTION_UP:
//clear zoom here?
break;
case MotionEvent.ACTION_CANCEL:
break;
default:
break;
}
return true;
}
});
のために代わりにあなたのレイアウトファイルに次のコードを使用することができます画像に?なぜ元のイメージを別のビットマップに保存しないのですか?ユーザーがズームを使用しているときに拡大鏡効果を取り除くときは、元のビットマップを使用してキャンバスに再描画し、ズームで画像を消去します。 –
いいえイメージビュー上に拡大円が表示されません。あなたはもっと何かを共有してくださいか、クラスはどこで動作していますか? –
ギャラリーの中心にある透明なオーバーレイフレームで画像をズームする必要があるので、画像が通過するとズームするようにしてください。 – Ravi