{"id":29289,"date":"2024-11-25T12:44:38","date_gmt":"2024-11-25T04:44:38","guid":{"rendered":"https:\/\/fwq.ai\/blog\/29289\/"},"modified":"2024-11-25T12:44:38","modified_gmt":"2024-11-25T04:44:38","slug":"android%e5%bc%80%e5%8f%91%e4%bb%bf%e5%be%ae%e4%bf%a1%e5%8f%91%e6%9c%8b%e5%8f%8b%e5%9c%88%e6%b5%8f%e8%a7%88%e5%9b%be%e7%89%87%e6%95%88%e6%9e%9c%e5%ae%9e%e4%be%8b%e4%bb%a3%e7%a0%81","status":"publish","type":"post","link":"https:\/\/fwq.ai\/blog\/29289\/","title":{"rendered":"Android\u5f00\u53d1\u4eff\u5fae\u4fe1\u53d1\u670b\u53cb\u5708\u6d4f\u89c8\u56fe\u7247\u6548\u679c\u5b9e\u4f8b\u4ee3\u7801"},"content":{"rendered":"<p>\u8fd9\u7bc7\u6587\u7ae0\u4e3b\u8981\u4ecb\u7ecd\u4e86android\u4eff\u5fae\u4fe1\u53d1\u670b\u53cb\u5708\u6d4f\u89c8\u56fe\u7247\u6548\u679c\u7684\u76f8\u5173\u8d44\u6599,\u9700\u8981\u7684\u670b\u53cb\u53ef\u4ee5\u53c2\u8003\u4e0b<\/p>\n<p>\u5148\u770b\u4e00\u4e0b\u6548\u679c\u5427\uff1a<\/p>\n<p style=\"text-align: center\"><img decoding=\"async\" src=\"https:\/\/img.php.cn\/upload\/article\/000\/000\/013\/ee6b1192b3940d03c3d8a6e912078eb5-0.gif\" style=\"max-width:90%\" class=\"aligncenter\" title=\"Android\u5f00\u53d1\u4eff\u5fae\u4fe1\u53d1\u670b\u53cb\u5708\u6d4f\u89c8\u56fe\u7247\u6548\u679c\u5b9e\u4f8b\u4ee3\u7801\u63d2\u56fe\" alt=\"Android\u5f00\u53d1\u4eff\u5fae\u4fe1\u53d1\u670b\u53cb\u5708\u6d4f\u89c8\u56fe\u7247\u6548\u679c\u5b9e\u4f8b\u4ee3\u7801\u63d2\u56fe\" \/><\/p>\n<p>\u4e0b\u9762\u5c31\u6765\u8bf4\u4e00\u4e0b\u5177\u4f53\u600e\u4e48\u5b9e\u73b0\u7684\uff1a<\/p>\n<p>\u5b9e\u73b0\u601d\u8def<\/p>\n<ul>\n<li>\n<p><span style=\"color: #333333\"><strong>1.\u9996\u5148\u6211\u4eec\u8981\u83b7\u53d6\u6570\u636e\u6e90\uff0c\u6570\u636e\u6e90\u5c31\u662f\u6211\u4eec\u7684\u6bcf\u6761\u8bf4\u8bf4\uff08\u5305\u62ec\u59d3\u540d\u3001\u6807\u9898\u3001\u56fe\u7247\u6570\u7ec4\uff09 <\/strong><\/span><\/p>\n<\/li>\n<li>\n<p><span style=\"color: #333333\"><strong>2.\u81ea\u5b9a\u4e49\u9002\u914d\u5668\uff08ListView\u5d4c\u5957\u7740GridView\uff09 <\/strong><\/span><\/p>\n<\/li>\n<li>\n<p><span style=\"color: #333333\"><strong>3.\u56fe\u7247\u70b9\u51fb\u6d4f\u89c8\u56fe\u7247\uff08Fragment+ViewPager\uff09<\/strong><\/span><\/p>\n<\/li>\n<\/ul>\n<p>\u5177\u4f53\u5b9e\u73b0<\/p>\n<p><strong>1.\u521d\u59cb\u5316\u6570\u636e\u6e90\uff0c\u8bbe\u7f6e\u9002\u914d\u5668\uff0c\u770b\u4e00\u4e0b\u4ee3\u7801\uff1a<\/strong><\/p>\n<p><\/p>\n<pre>public&nbsp;class&nbsp;MyActivity&nbsp;extends&nbsp;Activity&nbsp;{\r\n&nbsp;&nbsp;\/*\u56fe\u7247\u663e\u793a\u5217\u8868*\/\r\n&nbsp;&nbsp;private&nbsp;ListView&nbsp;listView;\r\n&nbsp;&nbsp;\/*\u56fe\u7247URL\u6570\u7ec4*\/\r\n&nbsp;&nbsp;private&nbsp;List&lt;contentbean&gt;&nbsp;contentBeans;\r\n&nbsp;&nbsp;\/*\u8bf4\u8bf4\u9002\u914d\u5668*\/\r\n&nbsp;&nbsp;private&nbsp;MyAdapter&nbsp;adapter;\r\n\r\n&nbsp;&nbsp;\/**\r\n&nbsp;&nbsp;&nbsp;*&nbsp;Called&nbsp;when&nbsp;the&nbsp;activity&nbsp;is&nbsp;first&nbsp;created.\r\n&nbsp;&nbsp;&nbsp;*\/\r\n&nbsp;&nbsp;@Override\r\n&nbsp;&nbsp;public&nbsp;void&nbsp;onCreate(Bundle&nbsp;savedInstanceState)&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;super.onCreate(savedInstanceState);\r\n&nbsp;&nbsp;&nbsp;&nbsp;setContentView(R.layout.main);\r\n&nbsp;&nbsp;&nbsp;&nbsp;initData();\r\n&nbsp;&nbsp;&nbsp;&nbsp;initViews();\r\n&nbsp;&nbsp;}\r\n\r\n&nbsp;&nbsp;\/**\r\n&nbsp;&nbsp;&nbsp;*&nbsp;\u521d\u59cb\u5316\u6570\u636e\r\n&nbsp;&nbsp;&nbsp;*\/\r\n&nbsp;&nbsp;private&nbsp;void&nbsp;initData(){\r\n&nbsp;&nbsp;&nbsp;&nbsp;contentBeans&nbsp;=&nbsp;new&nbsp;ArrayList&lt;contentbean&gt;();\r\n&nbsp;&nbsp;&nbsp;&nbsp;ArrayList&lt;string&gt;&nbsp;imgUrls1&nbsp;=&nbsp;new&nbsp;ArrayList&lt;string&gt;();\r\n&nbsp;&nbsp;&nbsp;&nbsp;imgUrls1.add(\"http:\/\/7xojuc.com1.z0.glb.clouddn.com\/110H2E40-6.jpg?attname=&amp;amp;e=1448288962&amp;amp;token=KDsCqUAWz3P-YT6In6oPnT56Eh2cig4zgQd12SJ_:AlTjfYD9SBFOdB4jmmZuKXAMOp8\");\r\n&nbsp;&nbsp;&nbsp;&nbsp;ContentBean&nbsp;cb1&nbsp;=&nbsp;new&nbsp;ContentBean(1,\"java\",\"Sun&nbsp;Microsystems\",imgUrls1);\r\n&nbsp;&nbsp;&nbsp;&nbsp;contentBeans.add(cb1);\r\n\r\n&nbsp;&nbsp;&nbsp;&nbsp;ArrayList&lt;string&gt;&nbsp;imgUrls2&nbsp;=&nbsp;new&nbsp;ArrayList&lt;string&gt;();\r\n&nbsp;&nbsp;&nbsp;&nbsp;imgUrls2.add(\"http:\/\/7xojuc.com1.z0.glb.clouddn.com\/110H2E40-6.jpg?attname=&amp;amp;e=1448288962&amp;amp;token=KDsCqUAWz3P-YT6In6oPnT56Eh2cig4zgQd12SJ_:AlTjfYD9SBFOdB4jmmZuKXAMOp8\");\r\n&nbsp;&nbsp;&nbsp;&nbsp;imgUrls2.add(\"http:\/\/7xojuc.com1.z0.glb.clouddn.com\/110H2E40-6.jpg?attname=&amp;amp;e=1448288962&amp;amp;token=KDsCqUAWz3P-YT6In6oPnT56Eh2cig4zgQd12SJ_:AlTjfYD9SBFOdB4jmmZuKXAMOp8\");\r\n&nbsp;&nbsp;&nbsp;&nbsp;imgUrls2.add(\"http:\/\/7xojuc.com1.z0.glb.clouddn.com\/110H2E40-6.jpg?attname=&amp;amp;e=1448288962&amp;amp;token=KDsCqUAWz3P-YT6In6oPnT56Eh2cig4zgQd12SJ_:AlTjfYD9SBFOdB4jmmZuKXAMOp8\");\r\n&nbsp;&nbsp;&nbsp;&nbsp;ContentBean&nbsp;cb2&nbsp;=&nbsp;new&nbsp;ContentBean(2,\"OC\",\"Stepstone\",imgUrls2);\r\n&nbsp;&nbsp;&nbsp;&nbsp;contentBeans.add(cb2);\r\n\r\n&nbsp;&nbsp;&nbsp;&nbsp;ArrayList&lt;string&gt;&nbsp;imgUrls3&nbsp;=&nbsp;new&nbsp;ArrayList&lt;string&gt;();\r\n&nbsp;&nbsp;&nbsp;&nbsp;imgUrls3.add(\"http:\/\/7xojuc.com1.z0.glb.clouddn.com\/110H2E40-6.jpg?attname=&amp;amp;e=1448288962&amp;amp;token=KDsCqUAWz3P-YT6In6oPnT56Eh2cig4zgQd12SJ_:AlTjfYD9SBFOdB4jmmZuKXAMOp8\");\r\n&nbsp;&nbsp;&nbsp;&nbsp;imgUrls3.add(\"http:\/\/7xojuc.com1.z0.glb.clouddn.com\/110H2E40-6.jpg?attname=&amp;amp;e=1448288962&amp;amp;token=KDsCqUAWz3P-YT6In6oPnT56Eh2cig4zgQd12SJ_:AlTjfYD9SBFOdB4jmmZuKXAMOp8\");\r\n&nbsp;&nbsp;&nbsp;&nbsp;imgUrls3.add(\"http:\/\/7xojuc.com1.z0.glb.clouddn.com\/110H2E40-6.jpg?attname=&amp;amp;e=1448288962&amp;amp;token=KDsCqUAWz3P-YT6In6oPnT56Eh2cig4zgQd12SJ_:AlTjfYD9SBFOdB4jmmZuKXAMOp8\");\r\n&nbsp;&nbsp;&nbsp;&nbsp;imgUrls3.add(\"http:\/\/7xojuc.com1.z0.glb.clouddn.com\/110H2E40-6.jpg?attname=&amp;amp;e=1448288962&amp;amp;token=KDsCqUAWz3P-YT6In6oPnT56Eh2cig4zgQd12SJ_:AlTjfYD9SBFOdB4jmmZuKXAMOp8\");\r\n&nbsp;&nbsp;&nbsp;&nbsp;imgUrls3.add(\"http:\/\/7xojuc.com1.z0.glb.clouddn.com\/110H2E40-6.jpg?attname=&amp;amp;e=1448288962&amp;amp;token=KDsCqUAWz3P-YT6In6oPnT56Eh2cig4zgQd12SJ_:AlTjfYD9SBFOdB4jmmZuKXAMOp8\");\r\n&nbsp;&nbsp;&nbsp;&nbsp;imgUrls3.add(\"http:\/\/7xojuc.com1.z0.glb.clouddn.com\/110H2E40-6.jpg?attname=&amp;amp;e=1448288962&amp;amp;token=KDsCqUAWz3P-YT6In6oPnT56Eh2cig4zgQd12SJ_:AlTjfYD9SBFOdB4jmmZuKXAMOp8\");\r\n&nbsp;&nbsp;&nbsp;&nbsp;imgUrls3.add(\"http:\/\/7xojuc.com1.z0.glb.clouddn.com\/110H2E40-6.jpg?attname=&amp;amp;e=1448288962&amp;amp;token=KDsCqUAWz3P-YT6In6oPnT56Eh2cig4zgQd12SJ_:AlTjfYD9SBFOdB4jmmZuKXAMOp8\");\r\n&nbsp;&nbsp;&nbsp;&nbsp;imgUrls3.add(\"http:\/\/7xojuc.com1.z0.glb.clouddn.com\/110H2E40-6.jpg?attname=&amp;amp;e=1448288962&amp;amp;token=KDsCqUAWz3P-YT6In6oPnT56Eh2cig4zgQd12SJ_:AlTjfYD9SBFOdB4jmmZuKXAMOp8\");\r\n&nbsp;&nbsp;&nbsp;&nbsp;imgUrls3.add(\"http:\/\/7xojuc.com1.z0.glb.clouddn.com\/110H2E40-6.jpg?attname=&amp;amp;e=1448288962&amp;amp;token=KDsCqUAWz3P-YT6In6oPnT56Eh2cig4zgQd12SJ_:AlTjfYD9SBFOdB4jmmZuKXAMOp8\");\r\n&nbsp;&nbsp;&nbsp;&nbsp;ContentBean&nbsp;cb3&nbsp;=&nbsp;new&nbsp;ContentBean(3,\"python\",\"Guido&nbsp;van&nbsp;Rossum\",imgUrls3);\r\n&nbsp;&nbsp;&nbsp;&nbsp;contentBeans.add(cb3);\r\n&nbsp;&nbsp;}\r\n\r\n\r\n&nbsp;&nbsp;private&nbsp;void&nbsp;initViews(){\r\n&nbsp;&nbsp;&nbsp;&nbsp;listView&nbsp;=&nbsp;(ListView)&nbsp;findViewById(R.id.lv_my);\r\n&nbsp;&nbsp;&nbsp;&nbsp;adapter&nbsp;=&nbsp;new&nbsp;MyAdapter(MyActivity.this,contentBeans);\r\n&nbsp;&nbsp;&nbsp;&nbsp;listView.setAdapter(adapter);\r\n&nbsp;&nbsp;}\r\n}&lt;\/string&gt;&lt;\/string&gt;&lt;\/string&gt;&lt;\/string&gt;&lt;\/string&gt;&lt;\/string&gt;&lt;\/contentbean&gt;&lt;\/contentbean&gt;<\/pre>\n<p>  \u767b\u5f55\u540e\u590d\u5236   <\/p>\n<p>\u8fd9\u91cc\u9762\u7684\u56fe\u7247\u662f\u6211\u4e0a\u4f20\u5230\u4e03\u725b\u7684\u7f51\u7edc\u56fe\u7247\uff0c\u52a0\u8f7d\u56fe\u7247\u662f\u7528ImageLoader,\u4e0b\u9762\u4e5f\u6709\u5177\u4f53\u7684ImageLoader\u914d\u7f6e\u3002 <br \/><strong>2.\u770b\u4e00\u4e0b\u9002\u914d\u5668\u5185\u5bb9 <br \/><\/strong>\u5728\u8bf4\u8bf4\u5217\u8868\u9002\u914d\u5668\u4e2d\u53bb\u8bbe\u7f6e\u56fe\u7247\u7684\u9002\u914d\u5668\uff0c\u56fe\u7247\u7684GridView\u662f\u91cd\u5199\u4e86\u4e00\u4e2a\u4e0d\u80fd\u6ed1\u52a8\u7684GridView\uff0c\u91cd\u5199\u4e00\u4e0bOnMeasure();<\/p>\n<p><\/p>\n<pre>public&nbsp;class&nbsp;MyAdapter&nbsp;extends&nbsp;BaseAdapter&nbsp;{\r\n\r\n&nbsp;&nbsp;private&nbsp;Context&nbsp;context;\r\n&nbsp;&nbsp;private&nbsp;List&lt;contentbean&gt;&nbsp;data;\r\n\r\n&nbsp;&nbsp;public&nbsp;MyAdapter(Context&nbsp;context,&nbsp;List&lt;contentbean&gt;&nbsp;data)&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;this.context&nbsp;=&nbsp;context;\r\n&nbsp;&nbsp;&nbsp;&nbsp;this.data&nbsp;=&nbsp;data;\r\n&nbsp;&nbsp;}\r\n\r\n&nbsp;&nbsp;@Override\r\n&nbsp;&nbsp;public&nbsp;int&nbsp;getCount()&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;data.size();\r\n&nbsp;&nbsp;}\r\n\r\n&nbsp;&nbsp;@Override\r\n&nbsp;&nbsp;public&nbsp;Object&nbsp;getItem(int&nbsp;i)&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;data.get(i);\r\n&nbsp;&nbsp;}\r\n\r\n&nbsp;&nbsp;@Override\r\n&nbsp;&nbsp;public&nbsp;long&nbsp;getItemId(int&nbsp;i)&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;i;\r\n&nbsp;&nbsp;}\r\n\r\n&nbsp;&nbsp;@Override\r\n&nbsp;&nbsp;public&nbsp;View&nbsp;getView(int&nbsp;i,&nbsp;View&nbsp;view,&nbsp;ViewGroup&nbsp;viewGroup)&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;ViewHolder&nbsp;holder;\r\n&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(view&nbsp;==&nbsp;null)&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;holder&nbsp;=&nbsp;new&nbsp;ViewHolder();\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;view&nbsp;=&nbsp;View.inflate(context,&nbsp;R.layout.item,&nbsp;null);\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;holder.gridView&nbsp;=&nbsp;(NoScrollGridView)&nbsp;view.findViewById(R.id.gridview);\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;holder.tvName&nbsp;=&nbsp;(TextView)&nbsp;view.findViewById(R.id.tv_name);\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;holder.tvTitle&nbsp;=&nbsp;(TextView)&nbsp;view.findViewById(R.id.tv_title);\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;view.setTag(holder);\r\n&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;else&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;holder&nbsp;=&nbsp;(ViewHolder)&nbsp;view.getTag();\r\n&nbsp;&nbsp;&nbsp;&nbsp;}\r\n\r\n&nbsp;&nbsp;&nbsp;&nbsp;final&nbsp;ContentBean&nbsp;bean&nbsp;=&nbsp;data.get(i);\r\n\r\n&nbsp;&nbsp;&nbsp;&nbsp;holder.tvName.setText(bean.getName());\r\n&nbsp;&nbsp;&nbsp;&nbsp;holder.tvTitle.setText(bean.getTitle());\r\n\r\n&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(data&nbsp;!=&nbsp;null&nbsp;&amp;amp;&amp;amp;&nbsp;data.size()&nbsp;&amp;gt;&nbsp;0)&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;holder.gridView.setAdapter(new&nbsp;ImageGridAdapter(context,&nbsp;bean.getImgUrls()));\r\n&nbsp;&nbsp;&nbsp;&nbsp;}\r\n&nbsp;&nbsp;&nbsp;&nbsp;\/**\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;\u56fe\u7247\u5217\u8868\u70b9\u51fb\u4e8b\u4ef6\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*\/\r\n&nbsp;&nbsp;&nbsp;&nbsp;holder.gridView.setOnItemClickListener(new&nbsp;AdapterView.OnItemClickListener()&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@Override\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;void&nbsp;onItemClick(AdapterView&amp;gt;&nbsp;adapterView,&nbsp;View&nbsp;view,&nbsp;int&nbsp;i,&nbsp;long&nbsp;l)&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Intent&nbsp;intent&nbsp;=&nbsp;new&nbsp;Intent(context,&nbsp;ImagePagerActivity.class);\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;intent.putExtra(ImagePagerActivity.EXTRA_IMAGE_URLS,&nbsp;(Serializable)&nbsp;bean.getImgUrls());\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;intent.putExtra(ImagePagerActivity.EXTRA_IMAGE_INDEX,&nbsp;i);\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;context.startActivity(intent);\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\r\n&nbsp;&nbsp;&nbsp;&nbsp;});\r\n\r\n&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;view;\r\n&nbsp;&nbsp;}\r\n\r\n&nbsp;&nbsp;class&nbsp;ViewHolder&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;TextView&nbsp;tvName,&nbsp;tvTitle;\r\n&nbsp;&nbsp;&nbsp;&nbsp;NoScrollGridView&nbsp;gridView;\r\n&nbsp;&nbsp;}\r\n}&lt;\/contentbean&gt;&lt;\/contentbean&gt;<\/pre>\n<p>  \u767b\u5f55\u540e\u590d\u5236   <\/p>\n<p>3.\u7136\u540e\u5c31\u662f\u56fe\u7247\u6d4f\u89c8\uff0c\u8fd9\u4e2a\u7f51\u4e0a\u4e5f\u6709\u597d\u591a\u7684Demo\uff0c\u4e5f\u6709\u8be6\u7ec6\u7684\u8bb2\u89e3\uff0c\u76f4\u63a5\u62fd\u8fc7\u6765\u7528\u5c31\u53ef\u4ee5\u4e86\uff0c\u4e0b\u9762\u7684\u56fe\u7247\u6570\u91cf\u662f\u76d1\u542csetOnPageChangeListener\uff08\uff09\u6765\u6539\u53d8\u4e0b\u9762\u7684\u56fe\u7247\u7d22\u5f15\u503c<\/p>\n<p><\/p>\n<pre>\/**\r\n&nbsp;*&nbsp;\u56fe\u7247\u67e5\u770b\u5668\r\n&nbsp;*\/\r\npublic&nbsp;class&nbsp;ImagePagerActivity&nbsp;extends&nbsp;FragmentActivity&nbsp;{\r\n&nbsp;&nbsp;private&nbsp;static&nbsp;final&nbsp;String&nbsp;STATE_POSITION&nbsp;=&nbsp;\"STATE_POSITION\";\r\n&nbsp;&nbsp;public&nbsp;static&nbsp;final&nbsp;String&nbsp;EXTRA_IMAGE_INDEX&nbsp;=&nbsp;\"image_index\";&nbsp;\r\n&nbsp;&nbsp;public&nbsp;static&nbsp;final&nbsp;String&nbsp;EXTRA_IMAGE_URLS&nbsp;=&nbsp;\"image_urls\";\r\n\r\n&nbsp;&nbsp;private&nbsp;HackyViewPager&nbsp;mPager;\r\n&nbsp;&nbsp;private&nbsp;int&nbsp;pagerPosition;\r\n&nbsp;&nbsp;private&nbsp;TextView&nbsp;indicator;\r\n\r\n&nbsp;&nbsp;@Override&nbsp;\r\n&nbsp;&nbsp;public&nbsp;void&nbsp;onCreate(Bundle&nbsp;savedInstanceState)&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;super.onCreate(savedInstanceState);\r\n&nbsp;&nbsp;&nbsp;&nbsp;setContentView(R.layout.image_detail_pager);\r\n\r\n&nbsp;&nbsp;&nbsp;&nbsp;pagerPosition&nbsp;=&nbsp;getIntent().getIntExtra(EXTRA_IMAGE_INDEX,&nbsp;0);\r\n&nbsp;&nbsp;&nbsp;&nbsp;ArrayList&lt;string&gt;&nbsp;urls&nbsp;=&nbsp;getIntent().getStringArrayListExtra(EXTRA_IMAGE_URLS);\r\n\r\n&nbsp;&nbsp;&nbsp;&nbsp;mPager&nbsp;=&nbsp;(HackyViewPager)&nbsp;findViewById(R.id.pager);\r\n&nbsp;&nbsp;&nbsp;&nbsp;ImagePagerAdapter&nbsp;mAdapter&nbsp;=&nbsp;new&nbsp;ImagePagerAdapter(getSupportFragmentManager(),&nbsp;urls);\r\n&nbsp;&nbsp;&nbsp;&nbsp;mPager.setAdapter(mAdapter);\r\n&nbsp;&nbsp;&nbsp;&nbsp;indicator&nbsp;=&nbsp;(TextView)&nbsp;findViewById(R.id.indicator);\r\n\r\n&nbsp;&nbsp;&nbsp;&nbsp;CharSequence&nbsp;text&nbsp;=&nbsp;getString(R.string.viewpager_indicator,&nbsp;1,&nbsp;mPager.getAdapter().getCount());\r\n&nbsp;&nbsp;&nbsp;&nbsp;indicator.setText(text);\r\n&nbsp;&nbsp;&nbsp;&nbsp;\/\/&nbsp;\u66f4\u65b0\u4e0b\u6807\r\n&nbsp;&nbsp;&nbsp;&nbsp;mPager.setOnPageChangeListener(new&nbsp;OnPageChangeListener()&nbsp;{\r\n\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@Override\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;void&nbsp;onPageScrollStateChanged(int&nbsp;arg0)&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\r\n\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@Override\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;void&nbsp;onPageScrolled(int&nbsp;arg0,&nbsp;float&nbsp;arg1,&nbsp;int&nbsp;arg2)&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\r\n\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@Override\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;void&nbsp;onPageSelected(int&nbsp;arg0)&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CharSequence&nbsp;text&nbsp;=&nbsp;getString(R.string.viewpager_indicator,&nbsp;arg0&nbsp;+&nbsp;1,&nbsp;mPager.getAdapter().getCount());\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;indicator.setText(text);\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\r\n\r\n&nbsp;&nbsp;&nbsp;&nbsp;});\r\n&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(savedInstanceState&nbsp;!=&nbsp;null)&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pagerPosition&nbsp;=&nbsp;savedInstanceState.getInt(STATE_POSITION);\r\n&nbsp;&nbsp;&nbsp;&nbsp;}\r\n\r\n&nbsp;&nbsp;&nbsp;&nbsp;mPager.setCurrentItem(pagerPosition);\r\n&nbsp;&nbsp;}\r\n\r\n&nbsp;&nbsp;@Override\r\n&nbsp;&nbsp;public&nbsp;void&nbsp;onSaveInstanceState(Bundle&nbsp;outState)&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;outState.putInt(STATE_POSITION,&nbsp;mPager.getCurrentItem());\r\n&nbsp;&nbsp;}\r\n\r\n&nbsp;&nbsp;private&nbsp;class&nbsp;ImagePagerAdapter&nbsp;extends&nbsp;FragmentStatePagerAdapter&nbsp;{\r\n\r\n&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;ArrayList&lt;string&gt;&nbsp;fileList;\r\n\r\n&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;ImagePagerAdapter(FragmentManager&nbsp;fm,&nbsp;ArrayList&lt;string&gt;&nbsp;fileList)&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;super(fm);\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.fileList&nbsp;=&nbsp;fileList;\r\n&nbsp;&nbsp;&nbsp;&nbsp;}\r\n\r\n&nbsp;&nbsp;&nbsp;&nbsp;@Override\r\n&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;int&nbsp;getCount()&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;fileList&nbsp;==&nbsp;null&nbsp;?&nbsp;0&nbsp;:&nbsp;fileList.size();\r\n&nbsp;&nbsp;&nbsp;&nbsp;}\r\n\r\n&nbsp;&nbsp;&nbsp;&nbsp;@Override\r\n&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;Fragment&nbsp;getItem(int&nbsp;position)&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;url&nbsp;=&nbsp;fileList.get(position);\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;ImageDetailFragment.newInstance(url);\r\n&nbsp;&nbsp;&nbsp;&nbsp;}\r\n\r\n&nbsp;&nbsp;}\r\n}&lt;\/string&gt;&lt;\/string&gt;&lt;\/string&gt;<\/pre>\n<p>  \u767b\u5f55\u540e\u590d\u5236   <\/p>\n<p>\u56fe\u7247Fragment\u7684\u8be6\u7ec6\u754c\u9762\uff0c\u91cc\u9762\u6709\u957f\u6309\u70b9\u51fb\u4e8b\u4ef6\uff0c\u548c\u56fe\u7247\u52a0\u8f7d\u7684\u72b6\u6001<\/p>\n<p><\/p>\n<pre>package&nbsp;com.hankkin.WeiXinLookImgsDemo.activty;\r\n\r\nimport&nbsp;android.graphics.Bitmap;\r\nimport&nbsp;android.os.Bundle;\r\nimport&nbsp;android.support.v4.app.Fragment;\r\nimport&nbsp;android.view.LayoutInflater;\r\nimport&nbsp;android.view.View;\r\nimport&nbsp;android.view.ViewGroup;\r\nimport&nbsp;android.widget.ImageView;\r\nimport&nbsp;android.widget.ProgressBar;\r\nimport&nbsp;android.widget.Toast;\r\n\r\nimport&nbsp;com.hankkin.WeiXinLookImgsDemo.R;\r\nimport&nbsp;com.nostra13.universalimageloader.core.ImageLoader;\r\nimport&nbsp;com.nostra13.universalimageloader.core.assist.FailReason;\r\nimport&nbsp;com.nostra13.universalimageloader.core.listener.SimpleImageLoadingListener;\r\nimport&nbsp;com.others.PhotoViewAttacher;\r\n\r\n\/**\r\n&nbsp;*&nbsp;\u5355\u5f20\u56fe\u7247\u663e\u793aFragment\r\n&nbsp;*\/\r\npublic&nbsp;class&nbsp;ImageDetailFragment&nbsp;extends&nbsp;Fragment&nbsp;{\r\n&nbsp;&nbsp;private&nbsp;String&nbsp;mImageUrl;\r\n&nbsp;&nbsp;private&nbsp;ImageView&nbsp;mImageView;\r\n&nbsp;&nbsp;private&nbsp;ProgressBar&nbsp;progressBar;\r\n&nbsp;&nbsp;private&nbsp;PhotoViewAttacher&nbsp;mAttacher;\r\n\r\n&nbsp;&nbsp;public&nbsp;static&nbsp;ImageDetailFragment&nbsp;newInstance(String&nbsp;imageUrl)&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;final&nbsp;ImageDetailFragment&nbsp;f&nbsp;=&nbsp;new&nbsp;ImageDetailFragment();\r\n\r\n&nbsp;&nbsp;&nbsp;&nbsp;final&nbsp;Bundle&nbsp;args&nbsp;=&nbsp;new&nbsp;Bundle();\r\n&nbsp;&nbsp;&nbsp;&nbsp;args.putString(\"url\",&nbsp;imageUrl);\r\n&nbsp;&nbsp;&nbsp;&nbsp;f.setArguments(args);\r\n\r\n&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;f;\r\n&nbsp;&nbsp;}\r\n\r\n&nbsp;&nbsp;@Override\r\n&nbsp;&nbsp;public&nbsp;void&nbsp;onCreate(Bundle&nbsp;savedInstanceState)&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;super.onCreate(savedInstanceState);\r\n&nbsp;&nbsp;&nbsp;&nbsp;mImageUrl&nbsp;=&nbsp;getArguments()&nbsp;!=&nbsp;null&nbsp;?&nbsp;getArguments().getString(\"url\")&nbsp;:&nbsp;null;\r\n&nbsp;&nbsp;}\r\n\r\n&nbsp;&nbsp;@Override\r\n&nbsp;&nbsp;public&nbsp;View&nbsp;onCreateView(LayoutInflater&nbsp;inflater,&nbsp;ViewGroup&nbsp;container,&nbsp;Bundle&nbsp;savedInstanceState)&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;final&nbsp;View&nbsp;v&nbsp;=&nbsp;inflater.inflate(R.layout.image_detail_fragment,&nbsp;container,&nbsp;false);\r\n&nbsp;&nbsp;&nbsp;&nbsp;mImageView&nbsp;=&nbsp;(ImageView)&nbsp;v.findViewById(R.id.image);\r\n&nbsp;&nbsp;&nbsp;&nbsp;mAttacher&nbsp;=&nbsp;new&nbsp;PhotoViewAttacher(mImageView);\r\n\r\n&nbsp;&nbsp;&nbsp;&nbsp;mAttacher.setOnPhotoTapListener(new&nbsp;PhotoViewAttacher.OnPhotoTapListener()&nbsp;{\r\n\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@Override\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;void&nbsp;onPhotoTap(View&nbsp;arg0,&nbsp;float&nbsp;arg1,&nbsp;float&nbsp;arg2)&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;getActivity().finish();\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\r\n&nbsp;&nbsp;&nbsp;&nbsp;});\r\n&nbsp;&nbsp;&nbsp;&nbsp;mAttacher.setOnLongClickListener(new&nbsp;View.OnLongClickListener()&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@Override\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;boolean&nbsp;onLongClick(View&nbsp;view)&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Toast.makeText(getActivity().getApplicationContext(),\"\u4fdd\u5b58\",Toast.LENGTH_SHORT).show();\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;false;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\r\n&nbsp;&nbsp;&nbsp;&nbsp;});\r\n&nbsp;&nbsp;&nbsp;&nbsp;progressBar&nbsp;=&nbsp;(ProgressBar)&nbsp;v.findViewById(R.id.loading);\r\n&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;v;\r\n&nbsp;&nbsp;}\r\n\r\n&nbsp;&nbsp;@Override\r\n&nbsp;&nbsp;public&nbsp;void&nbsp;onActivityCreated(Bundle&nbsp;savedInstanceState)&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;super.onActivityCreated(savedInstanceState);\r\n\r\n&nbsp;&nbsp;&nbsp;&nbsp;ImageLoader.getInstance().displayImage(mImageUrl,&nbsp;mImageView,&nbsp;new&nbsp;SimpleImageLoadingListener()&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@Override\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;void&nbsp;onLoadingStarted(String&nbsp;imageUri,&nbsp;View&nbsp;view)&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;progressBar.setVisibility(View.VISIBLE);\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\r\n\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@Override\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;void&nbsp;onLoadingFailed(String&nbsp;imageUri,&nbsp;View&nbsp;view,&nbsp;FailReason&nbsp;failReason)&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;message&nbsp;=&nbsp;null;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;switch&nbsp;(failReason.getType())&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;IO_ERROR:\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;message&nbsp;=&nbsp;\"\u4e0b\u8f7d\u9519\u8bef\";\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;DECODING_ERROR:\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;message&nbsp;=&nbsp;\"\u56fe\u7247\u65e0\u6cd5\u663e\u793a\";\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;NETWORK_DENIED:\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;message&nbsp;=&nbsp;\"\u7f51\u7edc\u6709\u95ee\u9898\uff0c\u65e0\u6cd5\u4e0b\u8f7d\";\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;OUT_OF_MEMORY:\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;message&nbsp;=&nbsp;\"\u56fe\u7247\u592a\u5927\u65e0\u6cd5\u663e\u793a\";\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;UNKNOWN:\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;message&nbsp;=&nbsp;\"\u672a\u77e5\u7684\u9519\u8bef\";\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Toast.makeText(getActivity(),&nbsp;message,&nbsp;Toast.LENGTH_SHORT).show();\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;progressBar.setVisibility(View.GONE);\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\r\n\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@Override\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;void&nbsp;onLoadingComplete(String&nbsp;imageUri,&nbsp;View&nbsp;view,&nbsp;Bitmap&nbsp;loadedImage)&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;progressBar.setVisibility(View.GONE);\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mAttacher.update();\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\r\n&nbsp;&nbsp;&nbsp;&nbsp;});\r\n&nbsp;&nbsp;}\r\n}<\/pre>\n<p>  \u767b\u5f55\u540e\u590d\u5236   <\/p>\n<p>\u5fd8\u4e86ImageLoader\u7684\u521d\u59cb\u5316\u5de5\u4f5c\u4e86\uff0c\u7ed9\u5927\u5bb6\u52a0\u4e0a\u5427\uff0c\u6211\u5199\u5230Application\u91cc\u4e86\u3002<\/p>\n<p><\/p>\n<pre>private&nbsp;MyApplication&nbsp;context;\r\n\r\n&nbsp;&nbsp;@Override\r\n&nbsp;&nbsp;public&nbsp;void&nbsp;onCreate()&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;super.onCreate();\r\n&nbsp;&nbsp;&nbsp;&nbsp;context&nbsp;=&nbsp;this;\r\n&nbsp;&nbsp;&nbsp;&nbsp;initImageLoader(context);\r\n&nbsp;&nbsp;}\r\n\r\n&nbsp;&nbsp;\/**\r\n&nbsp;&nbsp;&nbsp;*&nbsp;\u521d\u59cb\u5316Imageloader\r\n&nbsp;&nbsp;&nbsp;*&nbsp;by&nbsp;Hankkin&nbsp;at:2015-11-22&nbsp;23:20:29\r\n&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;context\r\n&nbsp;&nbsp;&nbsp;*\/\r\n&nbsp;&nbsp;public&nbsp;static&nbsp;void&nbsp;initImageLoader(Context&nbsp;context){\r\n&nbsp;&nbsp;&nbsp;&nbsp;DisplayImageOptions&nbsp;options&nbsp;=&nbsp;new&nbsp;DisplayImageOptions.Builder()\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.showImageOnLoading(R.drawable.ic_launcher)\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.showImageOnFail(R.drawable.ic_launcher)\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.resetViewBeforeLoading(false)&nbsp;\/\/&nbsp;default\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.delayBeforeLoading(0)\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.cacheInMemory(true)&nbsp;\/\/&nbsp;default\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.cacheOnDisk(true)&nbsp;\/\/&nbsp;default\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.considerExifParams(true)&nbsp;\/\/&nbsp;default\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.imageScaleType(ImageScaleType.IN_SAMPLE_POWER_OF_2)&nbsp;\/\/&nbsp;default\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.bitmapConfig(Bitmap.Config.ARGB_8888)&nbsp;\/\/&nbsp;default\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.displayer(new&nbsp;SimpleBitmapDisplayer())&nbsp;\/\/&nbsp;default\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.handler(new&nbsp;Handler())&nbsp;\/\/&nbsp;default\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.build();\r\n&nbsp;&nbsp;&nbsp;&nbsp;File&nbsp;picPath&nbsp;=&nbsp;new&nbsp;File(Environment.getExternalStorageDirectory().getPath()&nbsp;+&nbsp;File.separator&nbsp;+&nbsp;\"weixinlookimgdemo\"&nbsp;+&nbsp;File.separator&nbsp;+&nbsp;\"files\");\r\n\r\n&nbsp;&nbsp;&nbsp;&nbsp;ImageLoaderConfiguration&nbsp;config&nbsp;=&nbsp;new&nbsp;ImageLoaderConfiguration.Builder(context)\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.memoryCacheExtraOptions(480,&nbsp;800)&nbsp;\/\/&nbsp;default&nbsp;=&nbsp;device&nbsp;screen&nbsp;dimensions\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.diskCacheExtraOptions(480,&nbsp;800,&nbsp;null)\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.threadPoolSize(3)&nbsp;\/\/&nbsp;default\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.threadPriority(Thread.NORM_PRIORITY&nbsp;-&nbsp;1)&nbsp;\/\/&nbsp;default\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.tasksProcessingOrder(QueueProcessingType.FIFO)&nbsp;\/\/&nbsp;default\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.denyCacheImageMultipleSizesInMemory()\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.memoryCache(new&nbsp;LruMemoryCache(2&nbsp;*&nbsp;1024&nbsp;*&nbsp;1024))\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.memoryCacheSize(2&nbsp;*&nbsp;1024&nbsp;*&nbsp;1024)\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.memoryCacheSizePercentage(13)&nbsp;\/\/&nbsp;default\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.diskCache(new&nbsp;UnlimitedDiscCache(picPath))&nbsp;\/\/&nbsp;default\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.diskCacheSize(50&nbsp;*&nbsp;1024&nbsp;*&nbsp;1024)\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.diskCacheFileCount(1000)\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.diskCacheFileNameGenerator(new&nbsp;HashCodeFileNameGenerator())&nbsp;\/\/&nbsp;default\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.imageDownloader(new&nbsp;BaseImageDownloader(context))&nbsp;\/\/&nbsp;default\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.imageDecoder(new&nbsp;BaseImageDecoder(true))&nbsp;\/\/&nbsp;default\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.defaultDisplayImageOptions(options)&nbsp;\/\/&nbsp;default\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.writeDebugLogs()\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.build();\r\n&nbsp;&nbsp;&nbsp;&nbsp;\/\/&nbsp;Initialize&nbsp;ImageLoader&nbsp;with&nbsp;configuration.\r\n&nbsp;&nbsp;&nbsp;&nbsp;ImageLoader.getInstance().init(config);\r\n&nbsp;&nbsp;}<\/pre>\n<p>  \u767b\u5f55\u540e\u590d\u5236   <\/p>\n<p>\u4ee5\u4e0a\u5c31\u662f\u5173\u4e8eAndroid\u4eff\u5fae\u4fe1\u53d1\u670b\u53cb\u5708\u6d4f\u89c8\u56fe\u7247\u6548\u679c\u7684\u5168\u90e8\u5185\u5bb9\uff0c\u5e0c\u671b\u5bf9\u5927\u5bb6\u5b66\u4e60Android\u8f6f\u4ef6\u7f16\u7a0b\u6709\u6240\u5e2e\u52a9\u3002<\/p>\n<p>\u4ee5\u4e0a\u5c31\u662fAndroid\u5f00\u53d1\u4eff\u5fae\u4fe1\u53d1\u670b\u53cb\u5708\u6d4f\u89c8\u56fe\u7247\u6548\u679c\u5b9e\u4f8b\u4ee3\u7801\u7684\u8be6\u7ec6\u5185\u5bb9\uff0c\u66f4\u591a\u8bf7\u5173\u6ce8\u7c73\u4e91\u5176\u5b83\u76f8\u5173\u6587\u7ae0\uff01<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u8fd9\u7bc7\u6587\u7ae0\u4e3b\u8981\u4ecb\u7ecd\u4e86android\u4eff\u5fae\u4fe1\u53d1\u670b\u53cb\u5708\u6d4f\u89c8\u56fe\u7247\u6548\u679c\u7684\u76f8\u5173\u8d44\u6599,\u9700\u8981\u7684\u670b\u53cb\u53ef\u4ee5\u53c2\u8003\u4e0b \u5148\u770b\u4e00\u4e0b\u6548\u679c\u5427\uff1a \u4e0b\u9762\u5c31\u6765\u8bf4\u4e00\u4e0b\u5177\u4f53\u600e\u4e48\u5b9e\u73b0\u7684\uff1a \u5b9e\u73b0\u601d\u8def 1.\u9996\u5148\u6211\u4eec\u8981\u83b7\u53d6\u6570\u636e\u6e90\uff0c\u6570\u636e\u6e90\u5c31\u662f\u6211\u4eec\u7684\u6bcf\u6761\u8bf4\u8bf4\uff08\u5305\u62ec\u59d3\u540d\u3001\u6807\u9898\u3001\u56fe\u7247\u6570\u7ec4\uff09 2.\u81ea\u5b9a\u4e49\u9002\u914d\u5668\uff08ListView\u5d4c\u5957\u7740GridView\uff09 3.\u56fe\u7247\u70b9\u51fb\u6d4f\u89c8\u56fe\u7247\uff08Fragment+ViewPager\uff09 \u5177\u4f53\u5b9e\u73b0 1.\u521d\u59cb\u5316\u6570\u636e\u6e90\uff0c\u8bbe\u7f6e\u9002\u914d\u5668\uff0c\u770b\u4e00\u4e0b\u4ee3\u7801\uff1a public&nbsp;class&nbsp;MyActivity&nbsp;extends&nbsp;Activity&nbsp;{ &nbsp;&nbsp;\/*\u56fe\u7247\u663e\u793a\u5217\u8868*\/ &nbsp;&nbsp;private&nbsp;ListView&nbsp;listView; &nbsp;&nbsp;\/*\u56fe\u7247URL\u6570\u7ec4*\/ &nbsp;&nbsp;private&nbsp;List&lt;contentbean&gt;&nbsp;contentBeans; &nbsp;&nbsp;\/*\u8bf4\u8bf4\u9002\u914d\u5668*\/ &nbsp;&nbsp;private&nbsp;MyAdapter&nbsp;adapter; &nbsp;&nbsp;\/** &nbsp;&nbsp;&nbsp;*&nbsp;Called&nbsp;when&nbsp;the&nbsp;activity&nbsp;is&nbsp;first&nbsp;created. &nbsp;&nbsp;&nbsp;*\/ &nbsp;&nbsp;@Override &nbsp;&nbsp;public&nbsp;void&nbsp;onCreate(Bundle&nbsp;savedInstanceState)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;super.onCreate(savedInstanceState); &nbsp;&nbsp;&nbsp;&nbsp;setContentView(R.layout.main); &nbsp;&nbsp;&nbsp;&nbsp;initData(); &nbsp;&nbsp;&nbsp;&nbsp;initViews(); &nbsp;&nbsp;} &nbsp;&nbsp;\/** &nbsp;&nbsp;&nbsp;*&nbsp;\u521d\u59cb\u5316\u6570\u636e &nbsp;&nbsp;&nbsp;*\/ &nbsp;&nbsp;private&nbsp;void&nbsp;initData(){ &nbsp;&nbsp;&nbsp;&nbsp;contentBeans&nbsp;=&nbsp;new&nbsp;ArrayList&lt;contentbean&gt;(); &nbsp;&nbsp;&nbsp;&nbsp;ArrayList&lt;string&gt;&nbsp;imgUrls1&nbsp;=&nbsp;new&nbsp;ArrayList&lt;string&gt;(); &nbsp;&nbsp;&nbsp;&nbsp;imgUrls1.add(&#8220;http:\/\/7xojuc.com1.z0.glb.clouddn.com\/110H2E40-6.jpg?attname=&amp;amp;e=1448288962&amp;amp;token=KDsCqUAWz3P-YT6In6oPnT56Eh2cig4zgQd12SJ_:AlTjfYD9SBFOdB4jmmZuKXAMOp8&#8243;); &nbsp;&nbsp;&nbsp;&nbsp;ContentBean&nbsp;cb1&nbsp;=&nbsp;new&nbsp;ContentBean(1,&#8221;java&#8221;,&#8221;Sun&nbsp;Microsystems&#8221;,imgUrls1); &nbsp;&nbsp;&nbsp;&nbsp;contentBeans.add(cb1); &nbsp;&nbsp;&nbsp;&nbsp;ArrayList&lt;string&gt;&nbsp;imgUrls2&nbsp;=&nbsp;new&nbsp;ArrayList&lt;string&gt;(); &nbsp;&nbsp;&nbsp;&nbsp;imgUrls2.add(&#8220;http:\/\/7xojuc.com1.z0.glb.clouddn.com\/110H2E40-6.jpg?attname=&amp;amp;e=1448288962&amp;amp;token=KDsCqUAWz3P-YT6In6oPnT56Eh2cig4zgQd12SJ_:AlTjfYD9SBFOdB4jmmZuKXAMOp8&#8221;); &nbsp;&nbsp;&nbsp;&nbsp;imgUrls2.add(&#8220;http:\/\/7xojuc.com1.z0.glb.clouddn.com\/110H2E40-6.jpg?attname=&amp;amp;e=1448288962&amp;amp;token=KDsCqUAWz3P-YT6In6oPnT56Eh2cig4zgQd12SJ_:AlTjfYD9SBFOdB4jmmZuKXAMOp8&#8221;); &nbsp;&nbsp;&nbsp;&nbsp;imgUrls2.add(&#8220;http:\/\/7xojuc.com1.z0.glb.clouddn.com\/110H2E40-6.jpg?attname=&amp;amp;e=1448288962&amp;amp;token=KDsCqUAWz3P-YT6In6oPnT56Eh2cig4zgQd12SJ_:AlTjfYD9SBFOdB4jmmZuKXAMOp8&#8243;); &nbsp;&nbsp;&nbsp;&nbsp;ContentBean&nbsp;cb2&nbsp;=&nbsp;new&nbsp;ContentBean(2,&#8221;OC&#8221;,&#8221;Stepstone&#8221;,imgUrls2); &nbsp;&nbsp;&nbsp;&nbsp;contentBeans.add(cb2); &nbsp;&nbsp;&nbsp;&nbsp;ArrayList&lt;string&gt;&nbsp;imgUrls3&nbsp;=&nbsp;new&nbsp;ArrayList&lt;string&gt;(); &nbsp;&nbsp;&nbsp;&nbsp;imgUrls3.add(&#8220;http:\/\/7xojuc.com1.z0.glb.clouddn.com\/110H2E40-6.jpg?attname=&amp;amp;e=1448288962&amp;amp;token=KDsCqUAWz3P-YT6In6oPnT56Eh2cig4zgQd12SJ_:AlTjfYD9SBFOdB4jmmZuKXAMOp8&#8221;); &nbsp;&nbsp;&nbsp;&nbsp;imgUrls3.add(&#8220;http:\/\/7xojuc.com1.z0.glb.clouddn.com\/110H2E40-6.jpg?attname=&amp;amp;e=1448288962&amp;amp;token=KDsCqUAWz3P-YT6In6oPnT56Eh2cig4zgQd12SJ_:AlTjfYD9SBFOdB4jmmZuKXAMOp8&#8221;); &nbsp;&nbsp;&nbsp;&nbsp;imgUrls3.add(&#8220;http:\/\/7xojuc.com1.z0.glb.clouddn.com\/110H2E40-6.jpg?attname=&amp;amp;e=1448288962&amp;amp;token=KDsCqUAWz3P-YT6In6oPnT56Eh2cig4zgQd12SJ_:AlTjfYD9SBFOdB4jmmZuKXAMOp8&#8221;); &nbsp;&nbsp;&nbsp;&nbsp;imgUrls3.add(&#8220;http:\/\/7xojuc.com1.z0.glb.clouddn.com\/110H2E40-6.jpg?attname=&amp;amp;e=1448288962&amp;amp;token=KDsCqUAWz3P-YT6In6oPnT56Eh2cig4zgQd12SJ_:AlTjfYD9SBFOdB4jmmZuKXAMOp8&#8221;); &nbsp;&nbsp;&nbsp;&nbsp;imgUrls3.add(&#8220;http:\/\/7xojuc.com1.z0.glb.clouddn.com\/110H2E40-6.jpg?attname=&amp;amp;e=1448288962&amp;amp;token=KDsCqUAWz3P-YT6In6oPnT56Eh2cig4zgQd12SJ_:AlTjfYD9SBFOdB4jmmZuKXAMOp8&#8221;); &nbsp;&nbsp;&nbsp;&nbsp;imgUrls3.add(&#8220;http:\/\/7xojuc.com1.z0.glb.clouddn.com\/110H2E40-6.jpg?attname=&amp;amp;e=1448288962&amp;amp;token=KDsCqUAWz3P-YT6In6oPnT56Eh2cig4zgQd12SJ_:AlTjfYD9SBFOdB4jmmZuKXAMOp8&#8221;); &nbsp;&nbsp;&nbsp;&nbsp;imgUrls3.add(&#8220;http:\/\/7xojuc.com1.z0.glb.clouddn.com\/110H2E40-6.jpg?attname=&amp;amp;e=1448288962&amp;amp;token=KDsCqUAWz3P-YT6In6oPnT56Eh2cig4zgQd12SJ_:AlTjfYD9SBFOdB4jmmZuKXAMOp8&#8221;); &nbsp;&nbsp;&nbsp;&nbsp;imgUrls3.add(&#8220;http:\/\/7xojuc.com1.z0.glb.clouddn.com\/110H2E40-6.jpg?attname=&amp;amp;e=1448288962&amp;amp;token=KDsCqUAWz3P-YT6In6oPnT56Eh2cig4zgQd12SJ_:AlTjfYD9SBFOdB4jmmZuKXAMOp8&#8221;); &nbsp;&nbsp;&nbsp;&nbsp;imgUrls3.add(&#8220;http:\/\/7xojuc.com1.z0.glb.clouddn.com\/110H2E40-6.jpg?attname=&amp;amp;e=1448288962&amp;amp;token=KDsCqUAWz3P-YT6In6oPnT56Eh2cig4zgQd12SJ_:AlTjfYD9SBFOdB4jmmZuKXAMOp8&#8243;); &nbsp;&nbsp;&nbsp;&nbsp;ContentBean&nbsp;cb3&nbsp;=&nbsp;new&nbsp;ContentBean(3,&#8221;python&#8221;,&#8221;Guido&nbsp;van&nbsp;Rossum&#8221;,imgUrls3); &nbsp;&nbsp;&nbsp;&nbsp;contentBeans.add(cb3); &nbsp;&nbsp;} &nbsp;&nbsp;private&nbsp;void&nbsp;initViews(){ [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[19],"tags":[],"class_list":["post-29289","post","type-post","status-publish","format-standard","hentry","category-19"],"_links":{"self":[{"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/posts\/29289","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/comments?post=29289"}],"version-history":[{"count":0,"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/posts\/29289\/revisions"}],"wp:attachment":[{"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/media?parent=29289"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/categories?post=29289"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/tags?post=29289"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}