Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

android Imageview layoutparams in dip?

I'm using the following code :

ImageView i = new ImageView(mContext);

i.setImageResource(mImageIds[position]);

i.setScaleType(ImageView.ScaleType.FIT_XY);

       //pixels settings !!!

i.setLayoutParams(new Gallery.LayoutParams(200, 100));

but as you can see, it is setting the layout dimensions in pixels.

Does anybody know how to do the same thing but in "dip" ?

like image 400
Fabien Avatar asked Nov 28 '22 10:11

Fabien


2 Answers

The following helper method takes as input device independent pixels (DIP) and returns actual pixels for the current device.

private int getPixels(int dipValue) {
    Resources r = getResources();
    int px = (int)TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,
                                            dipValue, 
                                            r.getDisplayMetrics());
    return px;
}
like image 186
devanshu_kaushik Avatar answered Dec 05 '22 18:12

devanshu_kaushik


If you store your dimension as a resource, you can use

getResources().getDimensionPixelSize(id);

This will also make it easier to adjust your layouts.

like image 30
ndw Avatar answered Dec 05 '22 17:12

ndw