Bitmap实现照片墙
Android开发中 位图 的展示 存储 缓存是很重要部分,现代化的用户界面有很多信息都是通过图片形式进行展现,如何更好的展示图片也是衡量一款App 性能和用户体验的重要部分。
Training–>Building Apps with Graphics & Animation–>Displaying Bitmaps Efficiently
今天就写一个简单的照片墙应用来实现Android的Bitmap图片展示功能。
目录结构:
1.GridView实现图片展示界面
- 在activity_main.xml中设置GridView布局
<?xml version="1.0" encoding="utf-8"?>
<GridView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/gridview"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:columnWidth="120dp"
android:numColumns="auto_fit"
android:verticalSpacing="10dp"
android:horizontalSpacing="10dp"
android:stretchMode="columnWidth"
android:gravity="center"
/>
GridView 设置列数 列的宽度 item横向 纵向间距 和 stretchMode 属性。
- 在MainActivity中实例化GridView,并实现ImageAdapter
setContentView(R.layout.activity_main);
//实例化GridView,并设置adpter
gridView = (GridView) findViewById(R.id.gridview);
gridView.setAdapter(new ImageAdapter(this));
public class ImageAdapter extends BaseAdapter {
private Context context;
public ImageAdapter(Context context) {
super();
this.context = context;
}
@Override
public int getCount() {
return images.length;
}
@Override
public Object getItem(int arg0) {
// TODO Auto-generated method stub
return null;
}
@Override
public long getItemId(int arg0) {
// TODO Auto-generated method stub
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = LayoutInflater.from(context);
View v;
if (convertView == null) {
//若为空,则动态加载一个View
v = inflater.inflate(R.layout.grid_item, null);
v.setPadding(8, 8, 8, 8);
} else {
v = convertView;
}
ImageView imageView = (ImageView) v.findViewById(R.id.item_image);
// 1.imageView.setImageResource(images[position]);
// 2.imageView.setImageBitmap(BitmapUtils.decodeSampledBitmapFromResource(getResources(),
// images[position], 220, 220));
//3.loadImageView(imageView, images[position]);
loadImageViewFromCache(imageView, images[position]);
TextView textview = (TextView) v.findViewById(R.id.item_text);
textview.setText(images[position] + "");
return v;
}
private Integer[] images = new Integer[] { R.drawable.krystal001,
R.drawable.krystal002, R.drawable.krystal003,
R.drawable.krystal004, R.drawable.krystal005,
R.drawable.krystal006, R.drawable.krystal007,
R.drawable.krystal008, R.drawable.krystal009,
R.drawable.krystal010, R.drawable.krystal011,
R.drawable.krystal012, R.drawable.krystal013,
R.drawable.krystal014 };
}
3.设置每个Item的布局 grid_item.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="120dp"
android:layout_height="120dp"
android:orientation="vertical" >
<ImageView
android:id="@+id/item_image"
android