当前位置: 编程技术>移动开发
本页文章导读:
▪领航控制器Nav和UITableView的使用 导航控制器Nav和UITableView的使用
转载http://haoxu.iteye.com/blog/815286http://haoxu.iteye.com/blog/815887
......
▪ 关于ListView中异步加载图片时,图片显示异常的有关问题 关于ListView中异步加载图片时,图片显示错误的问题
关于ListView的优化网上有不是的文件介绍,比如:
http://shazhuzhu1.iteye.com/blog/985911
也就是使用缓存convertView的形式,避免重新findViewById的.........
▪ 调用系统照相机拍照保存 调用系统相机拍照保存
public class CameraActivity extends Activity {
private static int TAKE_PICTURE = 1;
private Uri outputFileUri;
private File file;
private String filename,filepath;
private Bitmap bmp = null;
protected void onCre.........
[1]领航控制器Nav和UITableView的使用
来源: 互联网 发布时间: 2014-02-18
导航控制器Nav和UITableView的使用
转载
http://haoxu.iteye.com/blog/815286
http://haoxu.iteye.com/blog/815887
转载
http://haoxu.iteye.com/blog/815286
http://haoxu.iteye.com/blog/815887
[2] 关于ListView中异步加载图片时,图片显示异常的有关问题
来源: 互联网 发布时间: 2014-02-18
关于ListView中异步加载图片时,图片显示错误的问题
可以使用给缓存的view设置tag的方式解决
参考http://314858770.iteye.com/blog/1442272
关于ListView的优化网上有不是的文件介绍,比如:
http://shazhuzhu1.iteye.com/blog/985911
也就是使用缓存convertView的形式,避免重新findViewById的时间开销。
这个地方有一种很常见的情况未说明:
当被缓存的convertView里面包含ImageView并且图片数据又是从网上获取的时候,就会出现ListView中某个和多个位置的图片不断变换的问题。
原因是被缓存的convertView并不只是缓存了View的结构,而是把上个View全部内容都缓存了包括图片。这就造成每次都先显示已经出现的图片,然后才被替换为正确的图片。
而图片的不停变换的问题则是如下代码的原因:
asyncImageLoader.loadDrawable(stringList.get(position).get()[1], new AsyncImageLoader.ImageCallback() { @Override public void imageLoaded(Drawable imageDrawable, String imageUrl) { if(imageDrawable != null){ imageView.setImageDrawable(imageDrawable); } } });
这是一段异步加载图片的代码。
当ListView被快速滑动时,因为缓存了convertView所以如果有N此调用这个异步加载图片的方法,则此convertView的图片就会被设置N次。
当最后一次显示convertView时,其当前显示的图片则根据前几次异步加载的图片进行显示,优先加载完成的图片被优先显示。
解决方法:
1.不使用缓存的convertView,每次都重新inflate一个新的
2.不使用XML通过代码自己构造convertView,避免掉配置文件的解析时间
1 楼
changliangno1
2012-05-22
勉强接受第二种做法,而且是只new imageview,然后再添加到itemView中去。
我自己的做法是自定义imageView再其中添加刷新drawable的方法
我自己的做法是自定义imageView再其中添加刷新drawable的方法
2 楼
酷的飞上天空
2012-05-25
changliangno1 写道
勉强接受第二种做法,而且是只new imageview,然后再添加到itemView中去。
我自己的做法是自定义imageView再其中添加刷新drawable的方法
我自己的做法是自定义imageView再其中添加刷新drawable的方法
可以使用给缓存的view设置tag的方式解决
参考http://314858770.iteye.com/blog/1442272
[3] 调用系统照相机拍照保存
来源: 互联网 发布时间: 2014-02-18
调用系统相机拍照保存
public class CameraActivity extends Activity { private static int TAKE_PICTURE = 1; private Uri outputFileUri; private File file; private String filename,filepath; private Bitmap bmp = null; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); saveFullImage(); } private void saveFullImage() { filename = String.valueOf("img-imagename" + ".jpg"); Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); File f = new File(Environment.getExternalStorageDirectory() + "/Images"); if (!f.exists()) { f.mkdirs(); } filepath = f.getPath(); File file = new File(filepath, filename); outputFileUri = Uri.fromFile(file); intent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri); startActivityForResult(intent, TAKE_PICTURE); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == TAKE_PICTURE) { try { file = new File(filepath, filename); FileInputStream inputStream = null; inputStream = new FileInputStream(file); bmp = BitmapFactory.decodeStream(inputStream);//得到的bitmap对象 } catch (FileNotFoundException e) { e.printStackTrace(); } Intent i = new Intent(CameraActivity.this, XXXXActivity.class); startActivity(i); this.finish(); } } }
最新技术文章: