Paint deafalutPaint = new Paint();
canvas.drawRect(0, height, width, height + reflectionGap, deafalutPaint);
canvas.drawBitmap(reflectionImage, 0, height + reflectionGap, null);
Paint paint = new Paint();
LinearGradient shader = new LinearGradient(0, bitmap.getHeight(), 0,
bitmapWithReflection.getHeight() + reflectionGap, 0x70ffffff,
0x00ffffff, TileMode.CLAMP);
paint.setShader(shader);
paint.setXfermode(new PorterDuffXfermode(Mode.DST_IN));
canvas.drawRect(0, height, width, bitmapWithReflection.getHeight()
+ reflectionGap, paint);
return bitmapWithReflection;
}
}
2、加载图片的线程
class MyThread extends Thread{
int index;
public MyThread(int index) {
super();
this.index = index;
}
@Override
public void run() {
if (imageList.get(index).getIsNull().equals(ISTRUE)) { imageList.get(index).setImage(ImageManager.getRefImage(imageList.get(index)
.getPath()));
imageList.get(index).setIsNull(ISFALSE);
}
refreshAdapter();
}
}
3、gallery的滑动事件
private Gallery.OnItemSelectedListener itemSelected_listener = new Gallery.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> arg0, View arg1, int position,
long arg3) {
toShowIndex = position;
final Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
if (showingIndex != toShowIndex) {
showingIndex = toShowIndex;
// 业务逻辑处理
if (toShowIndex < imageList.size()) {
addImage(toShowIndex);
}
}
}
};
Thread checkChange = new Thread() {
@Override
public void run() {
int myIndex = toShowIndex;
try {
sleep(TIME_OUT_DISPLAY);
if (myIndex == toShowIndex) {
handler.sendEmptyMessage(0);
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
};
checkChange.start();
TextView gallery_total = (TextView) findViewById(R.id.gallery_total);
gallery_total.setText((toShowIndex + 1) + "/"+ imageList.size()); }
@Override
public void onNothingSelected(AdapterView<?> arg0) {
}
};
4、更新ImageAdapter
private void refreshAdapter() {
this.runOnUiThread(new Runnable() {
@Override
public void run() {
adpter.notifyDataSetChanged();
}
});
}
5、从sd卡里获取图片后封装对象
public List<ImageMessage> getAllImageMessage() {
List<ImageMessage> imageList = new ArrayList<ImageMessage>();
getSD(Environment.getExternalStorageDirectory().toString()+ "/");
for (int i = 0; i < pathList.size(); i++) {
ImageMessage im = new ImageMessage();
im.setPath(pathList.get(i)[0]);
im.setName(pathList.get(i)[1]);
im.setIsNull(ISTRUE);
imageList.add(im);
}
return imageList;
}
分享到:
相关推荐
NULL 博文链接:https://erwin-king.iteye.com/blog/1066590
针对Android应用中Gallery内存溢出的解决方案
gallery加载大图片可以更换sd卡路径不溢出有倒影效果
android Gallery实现异步加载网络图片 并只加载当前停止页面图
android Gallery实现异步加载网络图片 并只加载当前停止页面图.zip
Gallery异步加载图片和listView动态刷新 .rar
Gallery异步加载当前页图片,记住Gallery滑动的时候不会去下载全部的图片,只有停留在当前页的图片才会下载加载,这样大大的节约了用户流量
NULL 博文链接:https://zheyiw.iteye.com/blog/1561121
2. **仅加载当前页图片**:通过监听Gallery的滚动事件,仅在用户停止滚动时加载当前页面的图片,减少不必要的流量消耗。 3. **缓存机制**:采用LruCache或DiskLruCache技术,对已加载的图片进行缓存,提高再次访问时...
gallery实现异步加载图片demo解决卡的问题
listview,gallery加载网络图片的好的开源库,已经试用了,效果挺好的
Android利用Gallery和ImageSwitcher实现在线相册图片预览功能(异步加载图片)
android Gallery实现异步加载网络图片 并只加载当前停止页面图.rar
ImageLoader开源框架加载图片,完整例子包括ListView的图片加载、GridView的图片加载、Gallery画廊的图片加载,用的时候间谍配置权限
使用Gallery控件实现刷新加载和分页加载,给需要的朋友提供一个参考思路,不要分。
Android应用源码Gallery实现异步加载网络图片,并只加载当前停止页面
ViewPagerl加载网络图片实现gallery效果
gallery 加载完图片后,自动滚动到左对齐