Provo:
//CREAZIONE DEL LAYOUT
layout=new RelativeLayout(this);
BitmapDrawable sfondo=(BitmapDrawable)this.getResources().getDrawable(R.drawable.cartella);
layout.setBackground(sfondo);
//settaggio dei parametri
LayoutParams lParams=new LayoutParams(LayWidth,LayHeight);
lParams.leftMargin=LayLeft;
lParams.topMargin=LayTop;
layout.setLayoutParams(lParams);
//CREAZIONE DELL'IMMAGINE
ImageView imageView =new ImageView(this);
BitmapDrawable immagine=(BitmapDrawable)this.getResources().getDrawable(R.drawable.chiave);
imageView.setImageDrawable(immagine);
//definizione delle dimensioni
ImgWidth=immagine.getBitmap().getWidth();
ImgHeight=immagine.getBitmap().getHeight();
//scaletype
imageView.setScaleType(ImageView.ScaleType.FIT_START);
Log.v(""+ImgWidth,""+ImgHeight);
//settaggio dei parametri
LayoutParams imgParams=new LayoutParams(ImgWidth,ImgHeight);
imgParams.leftMargin=ImgLeft;
imgParams.topMargin=ImgTop;
imageView.setLayoutParams(imgParams);
Ecco: qui ottengo questi valori di larghezza e altezza dell'immagine:
04-17 21:52:23.285: V/406(2224): 175ossia 406 e 175.
Ma le dimensioni del Layout contenitore sono 100 e 100:
int LayLeft, LayTop, LayWidth, LayHeight;
int ImgLeft, ImgTop, ImgWidth, ImgHeight;
LayLeft=0;
LayTop=0;
LayWidth=100;
LayHeight=100;
ImgLeft=0;
ImgTop=0;
Bisogna rapportare quindi le dimensioni dell'immagine a quelle del contenitore.Ecco infine la funzione che ho creato, in cui bisogna fornire una scalatura, una ImageView, la bitmap e le dimensioni del contenitore:
public void centerImage(float Scalatura, ImageView imgView,
BitmapDrawable bitmapDrawable,int ContWidth, int ContHeight){
int ImgWidth=bitmapDrawable.getBitmap().getWidth();
int ImgHeight=bitmapDrawable.getBitmap().getHeight();
float Scala=Scalatura;
if(ImgWidth>ImgHeight) {
float Ratio=(float)ImgHeight/(float)ImgWidth;
ImgWidth=(int) (ContWidth*Scala);
ImgHeight=(int)(ImgWidth*Ratio);
}else{
float Ratio=(float)ImgWidth/(float)ImgHeight;
ImgHeight=(int)(ContHeight*Scala);
ImgWidth=(int)(ImgHeight*Ratio);
}
int ImgTop=ContHeight/2-ImgHeight/2;
int ImgLeft=ContWidth/2-ImgWidth/2;
imgView.setScaleType(ImageView.ScaleType.FIT_START);
LayoutParams imgParams=new LayoutParams(ImgWidth,ImgHeight);
imgParams.leftMargin=ImgLeft;
imgParams.topMargin=ImgTop;
imgView.setLayoutParams(imgParams);
}

Nessun commento:
Posta un commento