Je suis un débutant dans android et je fais une application simple dans laquelle je sélectionne une image de la galerie, un rectangle est dessiné sur l'image que l'utilisateur peut faites glisser à n'importe quelle position sur l'image et redimensionnez dynamiquement le rectangle.Comment faire une forme dragable et redimensionnable en android dynamiquement
Mon code jusqu'à maintenant peut charger une image de la galerie et dessiner un rectangle sur l'image. Mais je ne sais pas comment faire pour que le rectangle soit dragable dynamiquement.
public class MainActivity extends Activity {
private static int RESULT_LOAD_IMAGE = 1;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button buttonLoadImage = (Button) findViewById(R.id.buttonLoadPicture);
buttonLoadImage.setOnClickListener(new View.OnClickListener() {
public void onClick(View arg0) {
Intent i = new Intent(
Intent.ACTION_PICK,
android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(i, RESULT_LOAD_IMAGE);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == RESULT_LOAD_IMAGE && resultCode == RESULT_OK && null != data) {
Uri selectedImage = data.getData();
String[] filePathColumn = { MediaStore.Images.Media.DATA };
Cursor cursor = getContentResolver().query(selectedImage,
filePathColumn, null, null, null);
cursor.moveToFirst();
int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
String picturePath = cursor.getString(columnIndex);
cursor.close();
ImageView imageView = (ImageView) findViewById(R.id.imgView);
Bitmap bMap = BitmapFactory.decodeFile(picturePath);
bMap = bMap.copy(Bitmap.Config.ARGB_8888 , true);
float width = imageView.getWidth();
float height = imageView.getHeight();
Canvas canvas = new Canvas(bMap);
Paint paint = new Paint();
paint.setAntiAlias(true);
paint.setStyle(Paint.Style.STROKE);
paint.setStrokeWidth(4);
paint.setColor(Color.RED);
canvas.drawRect(width/2+60, height/2-20, width/2-60, height/2+20, paint);
imageView.setImageBitmap(bMap);
}
}
}
La sortie que je veux est quelque chose comme dans l'image ci-dessus. Le rectangle rouge peut être redimensionné et déplacé par l'utilisateur, puis enregistrer l'image.
Donc, le but est de recadrer l'image? –
Non, le but est juste de mettre en évidence une partie particulière ... – Vikram
Si j'ai répondu à votre question, veuillez l'accepter comme réponse. –