Android 使用开源库载入网络图片,使用开源库载入图片。单击listview弹出popupwindow弹出框详情查看:

Android 单击listview弹出popupwindow弹出框

,里面还附带listview右滑删除按钮详情查看:Android 使用NineOldAndroids实现仿微信listview左滑出现删除itembutton。项目就是这样慢慢变得复杂,是往里面逐渐加功能,效果,代码。

本文项目源代码下载地址:点击

一、看实现的效果

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

二、项目结构图

三、部分源代码

1、MyApplication继承了Application

  1. package com.main.listviewsideslip;
  2.  
  3. import java.io.File;
  4. import com.nostra13.universalimageloader.cache.disc.impl.UnlimitedDiskCache;
  5. import com.nostra13.universalimageloader.cache.disc.naming.HashCodeFileNameGenerator;
  6. import com.nostra13.universalimageloader.cache.disc.naming.Md5FileNameGenerator;
  7. import com.nostra13.universalimageloader.cache.memory.impl.LruMemoryCache;
  8. import com.nostra13.universalimageloader.cache.memory.impl.UsingFreqLimitedMemoryCache;
  9. import com.nostra13.universalimageloader.core.DisplayImageOptions;
  10. import com.nostra13.universalimageloader.core.ImageLoader;
  11. import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
  12. import com.nostra13.universalimageloader.core.assist.QueueProcessingType;
  13. import com.nostra13.universalimageloader.core.decode.BaseImageDecoder;
  14. import com.nostra13.universalimageloader.core.download.BaseImageDownloader;
  15. import com.nostra13.universalimageloader.utils.StorageUtils;
  16.  
  17. import android.app.Application;
  18. import android.content.Context;
  19.  
  20. public class MyApplication extends Application{
  21.  
  22. public void onCreate() {
  23. super.onCreate();
  24. initImageLoader(getApplicationContext());
  25. }
  26.  
  27. public static void initImageLoader(Context context) {
  28. //缓存文件的文件夹
  29. File cacheDir = StorageUtils.getOwnCacheDirectory(context, "imageloader/Cache");
  30. ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(context)
  31. .memoryCacheExtraOptions(480, 800) // max width, max height,即保存的每一个缓存文件的最大长宽
  32. .threadPoolSize(3) //线程池内载入的数量
  33. .threadPriority(Thread.NORM_PRIORITY - 2)
  34. .denyCacheImageMultipleSizesInMemory()
  35. .diskCacheFileNameGenerator(new Md5FileNameGenerator()) //将保存的时候的URI名称用MD5 加密
  36. .memoryCache(new UsingFreqLimitedMemoryCache(2 * 1024 * 1024)) // You can pass your own memory cache implementation/你能够通过自己的内存缓存实现
  37. .memoryCacheSize(2 * 1024 * 1024) // 内存缓存的最大值
  38. .diskCacheSize(50 * 1024 * 1024) // 50 Mb sd卡(本地)缓存的最大值
  39. .tasksProcessingOrder(QueueProcessingType.LIFO)
  40. // 由原先的discCache -> diskCache
  41. .diskCache(new UnlimitedDiskCache(cacheDir))//自己定义缓存路径
  42. .imageDownloader(new BaseImageDownloader(context, 5 * 1000, 30 * 1000)) // connectTimeout (5 s), readTimeout (30 s)超时时间
  43. .writeDebugLogs() // Remove for release app
  44. .build();
  45. //全局初始化此配置
  46. ImageLoader.getInstance().init(config);
  47. }
  48. }

2、适配器RecentAdapter里面相同设置着网络载入配置。

  1. package com.listview.adapter;
  2.  
  3. import java.util.LinkedList;
  4. import android.content.Context;
  5. import android.view.LayoutInflater;
  6. import android.view.View;
  7. import android.view.View.OnClickListener;
  8. import android.view.ViewGroup;
  9. import android.widget.BaseAdapter;
  10. import android.widget.Button;
  11. import android.widget.ImageView;
  12. import android.widget.TextView;
  13. import com.main.entity.RecentItem;
  14. import com.main.listviewsideslip.Constants;
  15. import com.main.listviewsideslip.R;
  16. import com.nostra13.universalimageloader.core.DisplayImageOptions;
  17. import com.nostra13.universalimageloader.core.ImageLoader;
  18. import com.nostra13.universalimageloader.core.display.RoundedBitmapDisplayer;
  19. import com.view.listview.SwipeListView;
  20.  
  21. public class RecentAdapter extends BaseAdapter {
  22. private LayoutInflater mInflater;
  23. private LinkedList<RecentItem> mData;
  24. private SwipeListView mListView;
  25. private Context mContext;
  26. private DisplayImageOptions mOptions; // 设置图片显示相关參数
  27. public static String[] mImageUrls; // 图片路径
  28. private ImageLoader mImageLoader; //网络图片载入类
  29.  
  30. public RecentAdapter(Context context, LinkedList<RecentItem> data,
  31. SwipeListView listview) {
  32. mContext = context;
  33. this.mInflater = LayoutInflater.from(mContext);
  34. mData = data;
  35. this.mListView = listview;
  36. mImageLoader = ImageLoader.getInstance();
  37. initImageView();
  38. }
  39.  
  40. public void remove(int position) {
  41. if (position < mData.size()) {
  42. mData.remove(position);
  43. notifyDataSetChanged();
  44. }
  45. }
  46.  
  47. public void remove(RecentItem item) {
  48. if (mData.contains(item)) {
  49. mData.remove(item);
  50. notifyDataSetChanged();
  51. }
  52. }
  53.  
  54. public void addFirst(RecentItem item) {
  55. if (mData.contains(item)) {
  56. mData.remove(item);
  57. }
  58. mData.addFirst(item);
  59. notifyDataSetChanged();
  60. }
  61.  
  62. @Override
  63. public int getCount() {
  64. return mData.size();
  65. }
  66.  
  67. @Override
  68. public Object getItem(int position) {
  69. return mData.get(position);
  70. }
  71.  
  72. @Override
  73. public long getItemId(int position) {
  74. return position;
  75. }
  76.  
  77. @Override
  78. public View getView(final int position, View convertView, ViewGroup parent) {
  79. final RecentItem item = mData.get(position);
  80. ViewHolder vHolder = null;
  81. if (convertView == null) {
  82. convertView = mInflater.inflate(R.layout.recent_listview_item, null);
  83. vHolder = new ViewHolder();
  84. vHolder.nameTV = (TextView) convertView.findViewById(R.id.recent_list_item_name);
  85. vHolder.numTV = (TextView) convertView.findViewById(R.id.unreadmsg);
  86. vHolder.headIV = (ImageView) convertView.findViewById(R.id.icon);
  87. vHolder.deleteBtn = (Button) convertView.findViewById(R.id.recent_del_btn);
  88.  
  89. convertView.setTag(vHolder);
  90. }else {
  91. vHolder = (ViewHolder) convertView.getTag();
  92. }
  93.  
  94. vHolder.nameTV.setText(item.getName());
  95.  
  96. /**
  97. * imageUrl 图片的Url地址 imageView 承载图片的ImageView控件 options
  98. * DisplayImageOptions配置文件
  99. */
  100. mImageLoader.displayImage(mImageUrls[position],
  101. vHolder.headIV, mOptions);
  102.  
  103. int num = item.getNewNum();
  104. if (num > 0) {
  105. vHolder.numTV.setVisibility(View.VISIBLE);
  106. vHolder.numTV.setText(num + "");
  107. } else {
  108. vHolder.numTV.setVisibility(View.GONE);
  109. }
  110.  
  111. vHolder.deleteBtn.setOnClickListener(new OnClickListener() {
  112.  
  113. @Override
  114. public void onClick(View v) {
  115. mData.remove(position);
  116. notifyDataSetChanged();
  117. if (mListView != null)
  118. mListView.closeOpenedItems();
  119. }
  120. });
  121. return convertView;
  122. }
  123.  
  124. class ViewHolder{
  125. public TextView nameTV;
  126. public TextView numTV;
  127. public ImageView headIV;
  128. public Button deleteBtn;
  129. }

3、怎么调用,事实上都在上面那个适配器里面。也顺便看看MainActivity

  1. package com.main.listviewsideslip;
  2.  
  3. import java.util.Collections;
  4. import java.util.LinkedList;
  5. import com.listview.adapter.RecentAdapter;
  6. import com.main.entity.RecentItem;
  7. import com.view.listview.BaseSwipeListViewListener;
  8. import com.view.listview.SwipeListView;
  9. import com.view.pop.ActionItem;
  10. import com.view.pop.QuickAction;
  11. import android.os.Bundle;
  12. import android.view.View;
  13. import android.widget.TextView;
  14. import android.app.Activity;
  15. import android.content.Intent;
  16.  
  17. public class MainActivity extends Activity{
  18.  
  19. //listview的适配器
  20. private RecentAdapter mAdapter;
  21. //listview数据源
  22. public LinkedList<RecentItem> mRecentDatas;
  23. //自己定义的listview
  24. private SwipeListView mRecentListView;
  25. private TextView mEmpty;
  26. private int mClickItem = -1;
  27. // 点击item弹出
  28. protected QuickAction mItemClickQuickAction = null;
  29.  
  30. @Override
  31. protected void onCreate(Bundle savedInstanceState) {
  32. super.onCreate(savedInstanceState);
  33. setContentView(R.layout.activity_main);
  34.  
  35. initView(savedInstanceState);
  36.  
  37. initPop();
  38. }
  39.  
  40. //单击listview某一项时,能够弹出pop。QuickAction实现类是继承PopupWindows
  41. private void initPop() {
  42. // 设置Action
  43. mItemClickQuickAction = new QuickAction(this, QuickAction.VERTICAL);
  44.  
  45. ActionItem pointItem = new ActionItem(1, "具体信息", null);
  46. ActionItem areaItem = new ActionItem(2, "信息2", null);
  47. pointItem.setIcon(null);
  48. areaItem.setIcon(null);
  49.  
  50. mItemClickQuickAction.addActionItem(pointItem);
  51. mItemClickQuickAction.addActionItem(areaItem);
  52.  
  53. mItemClickQuickAction.setOnActionItemClickListener(new QuickAction.OnActionItemClickListener() {
  54. @Override
  55. public void onItemClick(QuickAction source, int pos, int actionId) {
  56. if (pos == 0) {
  57. Intent intent = new Intent(source.GetActionItemsGroup().getContext(),ListViewItemShowActivity.class);
  58. RecentItem item = new RecentItem();
  59. item = mRecentDatas.get(mClickItem);
  60. Bundle bundle = new Bundle();
  61. // bundle.putString("HeadImg", mImageUrls[mClickItem]);
  62. bundle.putInt("NewNum", item.getNewNum());
  63. bundle.putString("Name", item.getName());
  64. intent.putExtras(bundle);
  65. startActivity(intent);
  66. }
  67. mItemClickQuickAction.dismiss();
  68. }
  69. });
  70. }
  71.  
  72. private void initView(Bundle savedInstanceState) {
  73. mRecentListView = (SwipeListView) findViewById(R.id.recent_listview);
  74. mRecentDatas = getRecentList();
  75. mAdapter = new RecentAdapter(this, mRecentDatas, mRecentListView);
  76. mRecentListView.setAdapter(mAdapter);
  77.  
  78. mEmpty = (TextView) findViewById(R.id.empty);
  79. mRecentListView.setEmptyView(mEmpty);
  80. mRecentListView
  81. .setSwipeListViewListener(new BaseSwipeListViewListener() {
  82.  
  83. @Override
  84. public void onClickFrontView(View view, int position) {
  85. mClickItem = position;
  86. mItemClickQuickAction.show(view);
  87. }
  88.  
  89. @Override
  90. public void onClickBackView(int position) {
  91. mRecentListView.closeOpenedItems();// 关闭打开的项
  92. }
  93.  
  94. @Override
  95. public void onDismiss(int[] reverseSortedPositions) {
  96. for (int position : reverseSortedPositions) {
  97. mAdapter.remove(position);
  98. }
  99.  
  100. }
  101. });
  102. }
  103.  
  104. public LinkedList<RecentItem> getRecentList() {
  105. LinkedList<RecentItem> list = new LinkedList<RecentItem>();
  106. nameArray = getResources().getStringArray(R.array.jazzy_effects_ch);
  107. for (int i = 0; i < 20; i++) {
  108. // int icon = heads[i];
  109. String name = nameArray[i];
  110. int num = numArray[i];
  111. RecentItem item = new RecentItem(name, 0, num);
  112. list.add(item);
  113. }
  114. Collections.sort(list);// 降序
  115. return list;
  116. }
  117.  
  118. public static int[] numArray = { 21,67,65,8,54,67,23,78,98,54,67,23,67,423,23,67,90,12,34,56,978};
  119.  
  120. public static String[] nameArray = new String[21];
  121. }

四、最后别忘了AndroidManifest.xml配置网络权限,以及application

  1. <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
  2. <uses-permission android:name="android.permission.INTERNET" />
  3.  
  4. <application
  5. android:name="com.main.listviewsideslip.MyApplication"
  6. android:allowBackup="true"
  7. android:icon="@drawable/ic_launcher"
  8. android:label="@string/app_name"
  9. android:theme="@style/AppTheme" >

本文相关文章:

1、Android 使用NineOldAndroids实现仿微信listview左滑出现删除itembutton

2、Android 单击listview弹出popupwindow弹出框

本文项目源代码下载地址:点击

Android 使用开源库载入网络图片的更多相关文章

  1. Android 第三方开源库收集整理(转)

    原文地址:http://blog.csdn.net/caoyouxing/article/details/42418591 Android开源库 自己一直很喜欢Android开发,就如博客签名一样,  ...

  2. 45.Android 第三方开源库收集整理(转)

    原文地址:http://blog.csdn.net/caoyouxing/article/details/42418591 Android开源库 自己一直很喜欢Android开发,就如博客签名一样,  ...

  3. Android SlidingMenu开源库及其使用

    极客学院教程: http://www.jikexueyuan.com/course/61_5.html?ss=1 1. SlidingMenu开源库的配置 2. SlidingMenu 的使用 --- ...

  4. Android 使用开源库StickyGridHeaders来实现带sections和headers的GridView显示本地图片效果

    大家好!过完年回来到现在差不多一个月没写文章了,一是觉得不知道写哪些方面的文章,没有好的题材来写,二是因为自己的一些私事给耽误了,所以过完年的第一篇文章到现在才发表出来,2014年我还是会继续在CSD ...

  5. android 使用开源库zxing生成二维码,扫描二维码【转】

    转自:http://blog.csdn.net/qq_16064871/article/details/52422723 zxing是一个开放源码的,用Java实现的多种格式的1D/2D条码图像处理库 ...

  6. Android常用开源库集合【持续更新】

    1.FastJson  阿里巴巴工程师做的一个方便的JSON转换库 2.ButterKnife 只要作用能代替代码中大量的findviewbyid语句的使用,使用@injectview注入方式 3.v ...

  7. 2019最新Android常用开源库总结(附带github链接)

    前言 收集了一些比较常见的开源库,特此记录(已收录350+).另外,本文将持续更新,大家有关于Android 优秀的开源库,也可以在下面留言. 一 .基本控件 1.TextView HTextView ...

  8. Android 常用开源库总结(持续更新)

    前言 收集了一些比较常见的开源库,特此记录(已收录350+).另外,本文将持续更新,大家有关于Android 优秀的开源库,也可以在下面留言. 一 .基本控件 TextView HTextView 一 ...

  9. Android 实用开源库(不定期更新)

    ZXing 极其好用的二维码开源库. GayHub:https://github.com/zxing/zxing MPAndroidChart MPAndroidChart 是 Android 一个强 ...

随机推荐

  1. 【Appium】每次启动是提示安装setting和unlock app的解决办法

    进入appium安装目录,C:\Program Files (x86)\Appium\node_modules\appium\lib\devices\android,编辑android.js文件,注释 ...

  2. Markdown编辑器 常用语法

    一.标题 示例: # 1这是一级标题 ## 2这是二级标题 ### 3这是三级标题 #### 4这是四级标题 ##### 5这是五级标题 ###### 6这是六级标题 效果如下: 1这是一级标题 2这 ...

  3. Android如何从外部跳进App

    博客出自:http://blog.csdn.net/liuxian13183,转载注明出处! All Rights Reserved ! 这个问题解决了两天时间,因为网上没有完整的解决方案,解决后分享 ...

  4. Android ImageView设置图片原理(下)

    本文来自http://blog.csdn.net/liuxian13183/ ,引用必须注明出处! 写完上一篇后,总认为介绍的知识点不多,仅仅是一种在UI线程解析载入图片.两种在子线程解析,在UI线程 ...

  5. Linux能ping通IP,ping不通域名

    今天碰到个问题, 能ping通IP地址, ping不通域名, 一直以为是 DNS解析服务器的问题, 找了半天. 问题不在这里. [root@www postfix]# cat /etc/resolv. ...

  6. QThread 爬坑之旅(三种办法解决QObject: Cannot create children for a parent that is in a different thread)

    Cannot create children for a parent that is in a different thread. 在Qt的官方文档,大家知道有两种方式使用QThread. You ...

  7. vue9 计算属性 computed

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  8. 理解Linq查询

    using System; using System.Linq; static class Program { static double Square(double n) { Console.Wri ...

  9. quartz 持久化 数据库表

    此处只包括配置数据库操作 quartz 持久化数据库表格字段解释建表,SQL语句在dbTables文件夹中可以找到,介绍下我们开发主要使用到的表: (版本不一样,可能数据库表也不一样,这里使用2.2. ...

  10. Linux企业应用--RHAS 2.1 下安装中文 Lotus Domino R 6.5 图解

    原文请到ftp.jms165.com下载,是用上传用户                                                 (RHAS3+ksnapshot+OperOff ...