网上关于这个方面的文章也不少,基本的思路是线程+缓存来解决。...下面提出一些优化: 1、采用线程池 2、内存缓存+文件缓存 3、内存缓存中网上很多是采用SoftReference来防止堆溢出,这儿严格限制只能使用最大JVM内存的1/4 4、对下载的图片进行按比例缩放...,初始0,将通过此变量严格控制缓存所占用的堆内存 private long size = 0;// current allocated size // 缓存只能占用的最大堆内存 private...FileCache(context); executorService = Executors.newFixedThreadPool(5); } // 当进入listview...imageLoader.DisplayImage(url, imageView); 比如你的放在你的ListView的adapter的getView()方法中,当然也适用于GridView。
ViewPager ViewPager类直接继承了ViewGroup类,所有它是一个容器类,可以在其中添加其他的view类。...ViewPager经常和Fragment一起使用,并且提供了专门的FragmentPagerAdapter和FragmentStatePagerAdapter类供Fragment中的ViewPager使用...在编写ViewPager的应用的使用,还需要使用两个组件类分别是PagerTitleStrip类和PagerTabStrip类,PagerTitleStrip类直接继承自ViewGroup类,而PagerTabStrip...更绚丽 PagerSlidingTabStrip Android ListView控件的用法 listView是一个可以用来显示视图列表的控件。...它使用适配器来为之提供数据和资源。
" /> 再贴出的是listview显示的每一项item.xml ListView) view.findViewById(R.id.listview); listView.setAdapter(adapter); //自适配长...不是已经设置自适应长和宽了吗?为什么显示出来的效果还是占满屏幕的宽度呢? 可以看看stackoverflow上面这个人问的问题,这个问题想必纠结了挺多人。...为了让PopupWindow能够自适应ListView的内容,需要在listview_demo.xml添加一项: listView中最长的那个字符。上述demo中,所有显示的文字{中国,加油,钓鱼岛是中国的,!!!}中”钓鱼岛是中国的“是最长的。
秉承着实事求是的作风,弄清楚RecyclerView是否有足够的吸引力替换掉ListView,我从性能这一角度出发,研究RecyclerView和ListView二者的缓存机制,并得到了一些较有益的”结论...具体来说: ListView(两级缓存): RecyclerView(四级缓存): ListView和RecyclerView缓存机制基本一致: 1). mActiveViews和mAttachedScrap...的缓存机制做了补强和完善。...(RecyclerView和ListView添加,移除Item效果对比) 结合RecyclerView的缓存机制,看看局部刷新是如何实现的: 以RecyclerView中notifyItemRemoved...需要指出,ListView和RecyclerView最大的区别在于数据源改变时的缓存的处理逻辑,ListView是”一锅端”,将所有的mActiveViews都移入了二级缓存mScrapViews,而RecyclerView
秉承着实事求是的作风,弄清楚RecyclerView是否有足够的吸引力替换掉ListView,我从性能这一角度出发,研究RecyclerView和ListView二者的缓存机制,并得到了一些较有益的"结论...具体来说: ListView(两级缓存): RecyclerView(四级缓存): ListView和RecyclerView缓存机制基本一致: 1). mActiveViews和mAttachedScrap...的缓存机制做了补强和完善。...(RecyclerView和ListView添加,移除Item效果对比) 结合RecyclerView的缓存机制,看看局部刷新是如何实现的: 以RecyclerView中notifyItemRemoved...需要指出,ListView和RecyclerView最大的区别在于数据源改变时的缓存的处理逻辑,ListView是"一锅端",将所有的mActiveViews都移入了二级缓存mScrapViews,而RecyclerView
因为我是在之前的基础上写的,所以这个TableLayout和Viewpager实际上是写在Fragment上的。要写到Activity里其实也是一样的啦。...FragmentVpAdapter(views, tablist); vp.setAdapter(fragmentVpAdapter); // 将tablelayout和ViewPager...的每个页面内容,这里为了简单,就直接new的视图 * 如果想要不同布局的内容,就按ViewPager的使用方式就行了。...; i++) { TextView view = new TextView(getContext()); view.setText(i + 1 + "个viewpager...int position, Object object) { container.removeView(views.get(position)); } // 这个是和tablelayout
代码抽取(adapter) 项目框架的搭建: 以后每个view都是holder BaseHolder public abstract class BaseHolder {//写data和t...viewPager; private List datas; @Override public View initView() { viewPager = new ViewPager...ArrayList @Override public int getCount() { return Integer.MAX_VALUE;//这样写条目就能一直划了 } /* 判断返回的对象和...position, Object object) { ImageView view=(ImageView) object; convertView.add(view);// 把移除的对象 添加到缓存集合中...(contentView); // 把holder里的view对象 添加到listView的上面 listView.setAdapter(new ListBaseAdapter(datas
但问题是,现在这个库只能实现一开始加载的时候渲染文字,那如果我正在一个Activity里面操作,里面有viewpager,fragment等一大堆组件,然后我切换进设置,在设置里面修改字体再返回这个Activity...剩下的就是已经存在的Activity的组件,包括ListView等有缓存机制的 参考:http://www.jianshu.com/p/5d4e6ae8ba4e (2)遍历修改 对于原生,自定义控件采用遍历修改的方法...(还剩下ListView和ViewPager等有缓存机制的组件) /** * 遍历修改字体 * @param root 根目录,一般就是最顶层的LinearLayout *...mTypeface = Typeface.createFromAsset(mContext.getAssets(), currentPath); } } } (4)ViewPager...在Fragment的setUserVisibleHint中刷新ListView,一般性的控件已经由之前的遍历Traversal完成 最后贴一下Application的代码 public class TypeFaceApplication
private boolean isLoading = false; //Fragment对用户可见的标记 private boolean isUIVisible; //setUserVisibleHint和lazyLoad...两个方法是为了去除viewPager+fragment的懒加载 @Override public void setUserVisibleHint(boolean isVisibleToUser) {
加入这个jar包之后就可以使用ViewPager类了。...ViewPager的使用类似于ListView,需要有对应的Adapter进行数据绑定,实现图片切换仅需要继承PaperAdapter就可以了。继承后需要重写如下四个方法。...isViewFromObject用来实现判断View和Object是否为同一个View。 先看一下效果图: 第一步:首先是在布局文件里添加viewPager布局。...的使用就讲完了, 其实更重要的是想讲:如何解决Android下ViewPager和PagerAdapter中调用notifyDataSetChanged失效的问题 。...最基本的方法: 针对于child view比较简单的情况(例如仅有TextView、ImageView等,没有ListView等展示数据的情况),可以在自己的Adapter中加入代码: @Override
单独设置不起作用,需要配合maxWidth和maxHeight属性一起使用。...如果想设置图片固定大小,又想保持图片宽高比,需要如下设置: 1)设置layout_width和layout_height为wrap_content; 2)设置adjustViewBounds为true...android:textSize="20dp" android:padding="10dp"/> activity_main.xml主界面中加入一个ListView...com.example.user.imagetest; import android.app.Activity; import android.os.Bundle; import android.widget.ListView...list1 = (ListView)findViewById(R.id.list_view); // 构建Adapter String[] arrayName = {"
ListView专题 1.ListView属性: fadingEdge属性 ListView上边和下边有黑色的阴影,android : fadingEdge = "none"后就不会有阴影了 scrollbars...setVerticalScrollBarEnabled(true); fadeScrollbars属性 android : fadeScrollbars = "true" 设置此值为true就可以实现滚动条的自动隐藏和显示...)没有效果 有时调用setEmptyView没有效果,这是因为我们设置的这个EmptyView必须和该ListView在同一个布局体系中 如:下面这样的代码有些时候会没有效果 View loadingView...()添加ViewPager不显示的问题 addHeaderView()添加ViewPager后不能显示出来的问题: ListView的setAdapter前添加 mListView.addHeaderView(mHeaderView); 注意ViewPager的布局中宽高不能够使用wrap_content
Screenshot_1619146087.png 要实现如图的效果 总体结构 整体结构是一个ListView,LiseView里面嵌套一个Container(热门歌单) ListView(顶部3个横着的...backgroundColor: Global.pageBackgroundColor, appBar: AppBarWidget('', viewService.context), body: ListView...children: [ _getListView(state,dispatch), _gridView(state,dispatch), ], ); } } ListView...Widget _getListView(HotSongSheetsState state, Dispatch dispatch){ return ListView.builder( shrinkWrap
当然,如果只是动态展示数据,listview也可以做到,用它替代listview的原因有几个: ·简介中提到的它封装了viewholder的回收复用。...在android滑动组件嵌套一般思路,多任务手势思路,触摸传递思路,【例】listview嵌套viewpager 中我介绍了ListView嵌套ViewPager显示图片的办法。...其实在Gallery弃用之后,RecyclerView出来之前,ViewPager和扩展ScrollView是StackOverFlow上推荐的实现Gallery的两种解决办法,但是都有一定的问题,ScrollView...要实现Gallery的改动太大,ViewPager替用的滑动体验和原来的Gallery相去甚远。...事件机制和原来一样,RecyclerView的关键代码没有变化,所以就不放出源码了。
ListViewItemData("HTML5 History API实现无刷新跳转", "http://pic.cnitblog.com/face/306530/20140307103012.png", "本篇和大家一起了解一下...首先我们从展现形式上来对比一下Windows 8 与 Windows 8.1 中的磁贴:Windows 8支持两种尺寸的磁贴,正方形磁贴(150 * 150 像素)和长方形磁贴(310 * 150 像"...-- 作者头像和博文概要 --> <LinearLayout android:layout_width="match_parent" android:layout_height...-- 作者昵称和发布日期 --> <LinearLayout android:layout_width="match_parent" android:layout_height...(savedInstanceState); setContentView(R.layout.activity_main); listView = (ListView)
ListView,列表视图,直接继承了AbsListView,是一个以垂直方式在项目中显示View视图的列表。...ListView的数据项,来自一个继承了ListAdapter接口的适配器。...下面开始实战使用.O(∩_∩)O 使用ListView和Adapter MainActivity.java文件: package com.example.user.imagetest; import...list1 = (ListView)findViewById(R.id.list_view); // 构建Adapter String[] arrayName = {"...设置适配器 list1.setAdapter(adapter1); } } 然后需要在资源文件界面中加入ListView.
对于电商App,商品详情无疑是很重要的一个模块,观察主流购物App的详情界面,发现大部分都是做成了上下两部分,上面展示商品规格信息,下面是H5商品详情,或者是嵌套了一个包含H5详情及评论列表的ViewPager...DragScrollDetailsLayout GitHub链接 实现效果图 首先看一下实现效果图 简单的ScrollView+Webview 当然,如果将Webview替换成其他的ListView...scrollview+webview.gif ScrollView+ViewPager 适用场景:底部需要添加多个界面,并且需要滑动 ?...scrollview+viewpager.gif ScrollView+Fragmenttabhost 适用场景:底部需要添加多个界面,但是不需要滑动 ?...最后附上GitHub链接 欢迎 star DragScrollDetailsLayout GitHub链接 作者:看书的小蜗牛 原文链接: 仿淘宝、京东拖拽商品详情(可嵌套ViewPager、ListView
模板代码 - 列表和下拉刷新 手机应用一个常见的界面模式就是:顶部的ActionBar + TabStrip导航,中间的ListView,可以下拉刷新或者是底部的加载更多。...ActionBar-ViewPager-Fragment 自定义一个带有ActionBar的主题:这样既可以获得ActionBar效果,又可以自己调整ActionBar的显示,如背景和字体等。...//关联viewPager和FragmentStatePagerAdapter实例 viewPager.setAdapter(new MyPagerAdapter(getSupportFragmentManager...假设我们使用ListView显示一个下载应用的列表界面,在ListView的底部显示“加载更多”这样的按钮,那么就是让ListView同时显示2种类型的条目。 ...ListView的多条目类型复用,主要是getView、getViewTypeCount、getItemViewType和getCount搭配使用。
以下是一些在开发中比较常使用的控件和库。...拖动排序的ListView,滑动删除 https://github.com/bauerca/drag-sort-listview RecyclerViewSwipeDismiss RecycleView...ListView滑动时分组title可以固定在分组内 https://github.com/beworker/pinned-section-listview ViewPager ViewPagerIndicator...与ViewPager一起使用indicator https://github.com/JakeWharton/ViewPagerIndicator JellyViewPager 带有动画切换效果 https...相结合 https://github.com/florent37/MaterialViewPager material-design-dimens 符合material design设计风格的color和dimens
领取专属 10元无门槛券
手把手带您无忧上云