1. packageandroid.album.activity;
  2. importjava.io.File;
  3. importjava.util.ArrayList;
  4. importandroid.album.R;
  5. importandroid.album.core.AsyncLoadImage;
  6. importandroid.album.util.Listeners;
  7. importandroid.album.util.MenuID;
  8. importandroid.album.util.Public;
  9. importandroid.album.util.UnitConverter;
  10. importandroid.album.view.BorderImageView;
  11. importandroid.app.Activity;
  12. importandroid.app.ProgressDialog;
  13. importandroid.content.Context;
  14. importandroid.content.Intent;
  15. importandroid.graphics.Color;
  16. importandroid.os.Bundle;
  17. importandroid.os.Handler;
  18. importandroid.os.Message;
  19. importandroid.util.DisplayMetrics;
  20. importandroid.view.ContextMenu;
  21. importandroid.view.ContextMenu.ContextMenuInfo;
  22. importandroid.view.Menu;
  23. importandroid.view.MenuItem;
  24. importandroid.view.View;
  25. importandroid.view.View.OnClickListener;
  26. importandroid.view.ViewGroup;
  27. importandroid.widget.AdapterView;
  28. importandroid.widget.AdapterView.AdapterContextMenuInfo;
  29. importandroid.widget.AdapterView.OnItemClickListener;
  30. importandroid.widget.BaseAdapter;
  31. importandroid.widget.GridView;
  32. importandroid.widget.ImageButton;
  33. importandroid.widget.ImageView;
  34. importandroid.widget.TextView;
  35. /**
  36. *****************************************************************
  37. *文件名称:ListFolderImages.java
  38. *创建时间:2011-7-915:00
  39. *文件描述:显示指定文件夹下的图片列表
  40. *编写人员:Bryant
  41. *****************************************************************
  42. */
  43. publicclassListFolderImagesActivityextendsActivityimplements
  44. OnItemClickListener{
  45. privateImageButtonbtnBack;
  46. privateTextViewtvFolderName;
  47. /**
  48. *文件夹下的图片列表
  49. */
  50. privateArrayList<String>imageList=newArrayList<String>();
  51. privateStringfolderPath;
  52. privateGridViewgridview;
  53. privateImageAdapteradapter;
  54. privateintscreenWidth;
  55. privateintimageViewWidth;
  56. privateintimageViewHeight;
  57. @Override
  58. publicvoidonCreate(BundlesavedInstanceState){
  59. super.onCreate(savedInstanceState);
  60. setContentView(R.layout.list_folder_images);
  61. DisplayMetricsdm=newDisplayMetrics();
  62. getWindowManager().getDefaultDisplay().getMetrics(dm);
  63. screenWidth=dm.widthPixels;
  64. imageViewWidth=(screenWidth-UnitConverter.dip2px(this,20))/3;
  65. imageViewHeight=imageViewWidth;
  66. Intentintent=getIntent();
  67. folderPath=intent.getStringExtra("folderPath");
  68. tvFolderName=(TextView)findViewById(R.id.tvFolderName);
  69. tvFolderName.setText(intent.getStringExtra("folderName"));
  70. //返回
  71. btnBack=(ImageButton)findViewById(R.id.btnBack);
  72. btnBack.setOnTouchListener(Listeners.iBtnListener);
  73. btnBack.setOnClickListener(newOnClickListener(){
  74. @Override
  75. publicvoidonClick(Viewv){
  76. ListFolderImagesActivity.this.finish();
  77. }
  78. });
  79. startScanImageFolders();
  80. gridview=(GridView)findViewById(R.id.grid_view);
  81. adapter=newImageAdapter(this);
  82. gridview.setAdapter(adapter);
  83. gridview.setOnItemClickListener(this);
  84. registerForContextMenu(gridview);
  85. }
  86. publicvoidstartScanImageFolders(){
  87. finalProgressDialogprogressDialog=ProgressDialog
  88. .show(ListFolderImagesActivity.this,ListFolderImagesActivity.this.getString(R.string.waiting),
  89. ListFolderImagesActivity.this.getString(R.string.folder_scanning),false);
  90. newThread(){
  91. publicvoidrun(){
  92. imageList=getImagesFromFolder(folderPath);
  93. Messagemessage=newMessage();
  94. message.what=1;
  95. handler.sendMessage(message);
  96. progressDialog.dismiss();
  97. }
  98. }.start();
  99. }
  100. /**
  101. *获取指定文件夹中的图片
  102. *
  103. *@return
  104. */
  105. publicstaticArrayList<String>getImagesFromFolder(StringfolderPath){
  106. ArrayList<String>imageList=newArrayList<String>();
  107. Filefile=newFile(folderPath);
  108. File[]files=file.listFiles(newImageFileFilter());
  109. for(Filef:files){
  110. imageList.add(f.getPath());
  111. }
  112. returnimageList;
  113. }
  114. publicclassImageAdapterextendsBaseAdapter{
  115. privateContextmContext;
  116. publicImageAdapter(Contextc){
  117. mContext=c;
  118. }
  119. publicintgetCount(){
  120. returnimageList.size();
  121. }
  122. publicObjectgetItem(intposition){
  123. returnimageList.get(position);
  124. }
  125. publiclonggetItemId(intposition){
  126. returnposition;
  127. }
  128. publicViewgetView(intposition,ViewconvertView,ViewGroupparent){
  129. if(convertView==null){
  130. finalImageViewimageView;
  131. imageView=newBorderImageView(mContext,Color.GRAY);
  132. imageView.setLayoutParams(newGridView.LayoutParams(imageViewWidth,imageViewHeight));
  133. imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
  134. convertView=imageView;
  135. imageLoader.loadDrawable(imageList.get(position),newImageCallback(){
  136. publicvoidimageLoaded(DrawableimageDrawable,StringimageUrl){
  137. imageView.setImageDrawable(imageDrawable);
  138. }
  139. });
  140. }
  141. returnconvertView;
  142. }
  143. }
  144. *刷新UI
  145. */
  146. finalHandlerhandler=newHandler(){
  147. publicvoidhandleMessage(Messagemsg){
  148. switch(msg.what){
  149. case1:
  150. adapter.notifyDataSetChanged();
  151. break;
  152. }
  153. super.handleMessage(msg);
  154. }
  155. };
  156. }
  157. publicclassAsyncImageLoader{
  158. privateMap<String,SoftReference<Drawable>>imageCache=newHashMap<String,SoftReference<Drawable>>();
  159. publicDrawableloadDrawable(finalStringimageUrl,finalImageCallbackcallback){
  160. if(imageCache.containsKey(imageUrl)){
  161. SoftReference<Drawable>softReference=imageCache.get(imageUrl);
  162. if(softReference.get()!=null){
  163. returnsoftReference.get();
  164. }
  165. }
  166. finalHandlerhandler=newHandler(){
  167. @Override
  168. publicvoidhandleMessage(Messagemsg){
  169. callback.imageLoaded((Drawable)msg.obj,imageUrl);
  170. }
  171. };
  172. newThread(){
  173. publicvoidrun(){
  174. Drawabledrawable=loadImageFromUrl(imageUrl);
  175. imageCache.put(imageUrl,newSoftReference<Drawable>(drawable));
  176. handler.sendMessage(handler.obtainMessage(0,drawable));
  177. };
  178. }.start();
  179. returnnull;
  180. }
  181. protectedDrawableloadImageFromUrl(StringimageUrl){
  182. try{
  183. returnDrawable.createFromPath(imageUrl);
  184. }catch(Exceptione){
  185. thrownewRuntimeException(e);
  186. }
  187. }
  188. publicinterfaceImageCallback{
  189. publicvoidimageLoaded(DrawableimageDrawable,StringimageUrl);
  190. }
  191. }

更多相关文章

  1. android图片切换ImageSwichter的动画切换效果
  2. Android(安卓)studio图片ERROR: 9-patch image xx .9.png malfor
  3. Android(安卓)桌面快捷方式操作
  4. Android(安卓)DrawBitmap绘制图像
  5. Android(安卓)加载图片传到另一个页面 关于回调
  6. android gallery笔记
  7. android截屏并将截图缩放
  8. Android创建和删除桌面快捷方式
  9. Android(安卓)实现旋转键盘的例子

随机推荐

  1. Android(安卓)Handler
  2. 新Android工程src和layout目录为空的问题
  3. Android(安卓)数字签名学习笔记
  4. Android(安卓)学习之Drawable-shape使用
  5. 如何获取Android设备所支持的传感器种类
  6. 保护你的隐私,五种控制Android应用的权限
  7. Android深入浅出之Surface[1]
  8. Android状态check、focused、pressed、se
  9. android的ant编译打包
  10. 处女男学Android(十二)---Android(安卓)菜