java - programacion - curso android desarrollo de aplicaciones móviles pdf
¿Cómo puedo recortar un mapa de bits para ImageView? (4)
Hazlo android:scaleType="fitStart"
y para android:layout_height="400px"
Sé que esto debería ser simple, pero android:scaleType="centerCrop"
no android:scaleType="centerCrop"
la imagen
Obtuve una imagen de 1950 píxeles de ancho y necesito que se recorta por el ancho de los padres. Pero android:scaleType="centerCrop"
no android:scaleType="centerCrop"
la imagen. ¿Qué debo hacer en el diseño para mostrar solo los primeros 400 píxeles , por ejemplo, o el ancho de la pantalla / principal es
Perdón por una pregunta simple. Intenté buscarla en Google, solo preguntas complicadas allí. Y soy nuevo, así que no te desanimes, por favor)
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/rl1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/background_color">
<ImageView
android:id="@+id/ver_bottompanelprayer"
android:layout_width="match_parent"
android:layout_height="227px"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:scaleType="matrix"
android:background="@drawable/ver_bottom_panel_tiled_long" />
</RelativeLayout>
si solo hay una manera de cortarlo programáticamente, por favor dame un consejo con un método
Puede hacer esto programáticamente (esto asegura que obtiene el alto / ancho correcto):
ImageView image = (ImageView) findVieById(R.id.ver_bottompanelprayer);
DisplayMetrics dm = getResources().getDisplayMetrics();
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(1950, dm.heightPixels);
params.addRule(RelativeLayout.ALIGN_PARENT_LEFT);
params.addRule(RelativeLayout.ALIGN_PARENT_TOP);
image.setLayoutParams(params);
image.setScaleType(ScaleType.FIT_XY);
También puede recortar imágenes mediante programación utilizando createBitmap .
Bitmap bm = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher);
bm = Bitmap.createBitmap(bm, 0, 0, 400, 400);
your_imageview.setImageBitmap(bm);
Aquí 400 es su ancho y altura puede cambiar según su requisito.
De acuerdo, pegaré el comentario como respuesta :) ->
RelativeLayout rl = (RelativeLayout) findViewById(R.id.rl1);
final Options bitmapOptions=new Options();
DisplayMetrics metrics = getResources().getDisplayMetrics();
bitmapOptions.inDensity = metrics.densityDpi;
bitmapOptions.inTargetDensity=1;
/*`final` modifier might be necessary for the Bitmap*/
Bitmap bmp= BitmapFactory.decodeResource(getResources(), R.drawable.ver_bottom_panel_tiled_long, bitmapOptions);
bmp.setDensity(Bitmap.DENSITY_NONE);
bmp = Bitmap.createBitmap(bmp, 0, 0, rl.getWidth(), bmp.getHeight());
Luego en el código:
ImageView iv = (ImageView)v.findViewById(R.id.ver_bottompanelprayer);
if (iv != null){
iv.setImageBitmap(bmp);
}
Saludos :)