用ListView显示图片列表,每个Item放一张图片,图片宽大于高,且宽比屏幕大,
因此,宽度会自适应屏幕缩小到屏幕宽,图片高度也正常等比例缩小。
但是,ListView的Item的高度却要比图片大。
如果图片在本地中,可以获得图片的宽高值和屏幕的宽度值,因此可以用 (屏幕的宽/图片的宽) 值作为缩小比例,乘以图片的高,获得当前图片高度值,然后设置ListView的Item的高,这样,显示效果就正常了。
但是,如果是异步加载网络图片呢?我应该在什么时候可以获得加载完的图片资源?
本地的处理方式如下:
@getView of BaseAdapter
private final int[] pictures = {
R.drawable.photo1,R.drawable.photo2,R.drawable.photo3,
R.drawable.photo4,R.drawable.photo5,R.drawable.photo6};
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), pictures[position]);
DisplayMetrics dm =newDisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
int screenWidth = dm.widthPixels ;
if (screenWidth < bitmap.getWidth()){
AbsListView.LayoutParams lp = new AbsListView.LayoutParams(
LinearLayout.LayoutParams. MATCH_PARENT,
//横向适应屏幕宽度,那么,竖向就应该同比例缩放
(int)(((float)screenWidth/(float)bitmap.getWidth())*bitmap.getHeight()));
convertView.setLayoutParams(lp);
}