viewholder

Android开源框架之ImageLoader

假装没事ソ 提交于 2020-01-31 14:23:45
特点 多线程下载图片,图片可以来源于网络,文件系统,项目文件夹assets中以及drawable中等 支持随意的配置ImageLoader,例如线程池,图片下载器,内存缓存策略,硬盘缓存策略,图片显示选项以及其他的一些配置 支持图片的内存缓存,文件系统缓存或者SD卡缓存 支持图片下载过程的监听 根据控件(ImageView)的大小对Bitmap进行裁剪,减少Bitmap占用过多的内存 较好的控制图片的加载过程,例如暂停图片加载,重新开始加载图片, 一般使用在ListView,GridView中 ,滑动过程中暂停加载图片,停止滑动的时候去加载图片 提供在较慢的网络下对图片进行加载 下载地址 https://github.com/nostra13/Android-Universal-Image-Loader 准备工作 1)导入universal-image-loader-1.9.5.jar到项目中 2)创建MyApplication继承Application,在oncreate()中初始化ImageLoader public class MyApplication extends Application { @Override public void onCreate ( ) { super . onCreate ( ) ; // 初始化参数

Android 图片选择器

烂漫一生 提交于 2020-01-31 06:36:57
图片选择器,遍历系统所有图片并显示,点击查看大图,长按选中,并将结果返回 字体颜色res/color建立text_selecor.xml 1 <selector xmlns:android="http://schemas.android.com/apk/res/android"> 2 <item android:color="@android:color/white" android:state_enabled="true"/> 3 <item android:color="@android:color/darker_gray" android:state_enabled="false"/> 4 </selector> text_selector.xml 图片选择按钮 1 <selector xmlns:android="http://schemas.android.com/apk/res/android"> 2 <item android:state_checked="true" android:drawable="@mipmap/sel_check"/> 3 <item android:state_checked="false" android:drawable="@mipmap/sel_nor"/> 4 </selector> item_selector

(01)recyclerview的基本使用

点点圈 提交于 2020-01-29 01:44:25
1.几个重要的类 1.1 简述:首先说明他的几个重要的类 1.1.2 RecyclerView.Adapter 抽象类,为RecyclerView提供数据,一般根据不同的业务需求来编写具体的实现类。 1.1.3 RecyclerView.LayoutManager :抽象类,主要用于测量RecyclerView的子Item,以及根据不同的布局方式来实现Item的布局效果,v 7包自带的实现类有:LinearLayoutManager、StaggeredGridLayoutManager、GridLayoutManager。 1.1.4 RecyclerView.ItemDecoration 抽象类,这个主要用于不同的Item之间添加分割线(可选)。官方没有实现类,所以如果要添加分割线,我们需要手动实现这个抽象类 .1.1.5 RecyclerView.ItemAnimator 抽象类,这个主要用于当一个item添加或者删除的时候出现的动画效果,官方提供一个默认的实现类。如果想要使我们的RecyclerView在添加、删除数据的时候有炫酷的动画,可以实现这个抽象类。 2.创建Adapter适配器 继承该类的时候,必须重写这三个方法,我们分别解释一下这三个方法是什么作用: onCreateViewHolder:创建ViewHolder

Android控件学习(十)——RecyclerView

别来无恙 提交于 2020-01-24 22:14:56
ListView 的进阶版,可以实现横向滚动 这次也新建一个项目: day05_RecyclerView 一、基本用法 1、导入依赖库 参考资料:Android布局学习(四)——百分比布局Percent?Layout 新增控件需要引入依赖库,在 app/build.gradle 中添加如下内容: implementation 'androidx.recyclerview:recyclerview:1.0.0' 2、主布局添加控件 <?xml version="1.0" encoding="utf-8"?> < LinearLayout xmlns: android = " http://schemas.android.com/apk/res/android " android: orientation = " vertical " android: layout_width = " match_parent " android: layout_height = " match_parent " > < androidx.recyclerview.widget.RecyclerView android: id = " @+id/recycler_view " android: layout_width = " match_parent " android: layout_height

从 ListView 到 RecyclerView 的用法浅析

╄→尐↘猪︶ㄣ 提交于 2020-01-21 23:52:50
文章目录 要走好明天的路,必须记住昨天走过的路,思索今天正在走着的路。 ListView,一种在垂直滚动列表中显示条目的视图;RecyclerView,一种在局限的窗口呈现大数据集合的灵活视图。RecyclerView 部件是 ListView 的一种更高级且更灵活的版本。 以上描述来自官网。 移动设备屏幕空间有限,导致在屏幕上一次性显示的内容也是有限的。当需要显示大量的数据时,设想有这样的控件,可以帮助用户只通过手指上下滑动,就可以让屏幕外的数据滚动到屏幕内,同时,屏幕上原有的数据会滚动出屏幕。如此,便可以优雅地解决在局限的屏幕上显示大量数据的问题。ListView 和 RecyclerView 便适用于此。 不过,自 Android 5.0 推出以来,RecyclerView 在很多地方都在逐步取代 ListView,这也是官方推崇的。“江山代有才人出,各领风骚数百年”。如今,已要来到 Android 7.0 的时代,RecyclerView 的使用也很普遍了,或许,ListView 正逐步从 Android 的大舞台退出,RecyclerView 即将独领风骚。 下面浅析从 ListView 到 RecyclerView 的用法。 ListView 的用法 ListViewDemo 地址: ListViewDemo ,学习总结自 郭霖 的《第一行代码》。 新建一个

【实战】聊天窗口的实现

送分小仙女□ 提交于 2020-01-15 00:53:33
  今天参考书上的例子,自己也实现了一个相对美观的聊天界面,过程如下: 一、第一步制作用于显示聊天内容的图片,使用SDK目录下的Tools下的draw9patch.bat来制作Nine-Patch图片,以便适用于各种分辨率的终端;   需要注意的是在制作好之后保存的时候不能把保存的名称改掉,一定要带上保存时自动加上的.9,并且在引用的时候名称不用写.9即可,切记!在这浪费了一个多小时 二、编写主界面activity_main.xml,放一个ListView和LinearLayout,LinearLayout下面再放一个EditText(用于编写消息)和Button(用于发送消息) 1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 android:id="@+id/LinearLayout1" 4 android:layout_width="match_parent" 5 android:layout_height="match_parent" 6 android:orientation="vertical" 7 android:background="#d8e0e8" > 8 9 <ListView

android#编写一个聊天界面

点点圈 提交于 2020-01-15 00:51:41
摘自《第一行代码》——郭霖 既然是要编写一个聊天界面,那就肯定要有收到的消息和发出的消息。上一节中我们制作的message_left.9.png可以作为收到消息的背景图,那么毫无疑问你还需要再制作一张message_right.9.png作为发出消息的背景图。 图片都提供好了之后就可以开始编码了,首先还是编写主界面,修改activity_main.xml中的代码,如下所示: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#d8e0e8" android:orientation="vertical" > <ListView android:id="@+id/msg_list_view" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" android:divider="#0000" > </ListView> <LinearLayout android:layout

Android进阶笔记11:ListView篇之ListView性能优化

China☆狼群 提交于 2020-01-14 04:19:57
1. 首先思考一个问题 ListView如何才能提高效率 ?   当convertView为空时候,用setTag()方法为每个View绑定一个存放控件的ViewHolder对象。当convertView不为空,重复利用已经创建的View的时候,使用getTag()方法获取绑定的ViewHolder对象,这样就避免了findViewById对控件的层层查询,而是快速定位到控件。 鉴于上面分析,可以通过如下方法对ListView进行性能优化: (1)复用 convertView,使用历史的View, 提高效率 200 % (2)自定义静态类ViewHolder,减少findViewById的次数, 提高效率 50 % (3) 异步加载数据 , 分页加载数据 (4) 使用WeakRefrence 引用ImageView对象(采用 WeakRefrence (弱引用) ,防止在不断刷新当前界面View时候产生内存泄露 ) 2. ListView的性能优化 之 使用convertView和 ViewHolder : (1) 自定义ListView的Adapter时候,里面有个实现方法为getView(),这个方法专门用来加载View的, 优化getView()方法 , 内容如下: 1 static class ViewHolder { 2 TextView text; 3

recyclerview加载多种布局

喜夏-厌秋 提交于 2020-01-10 01:06:03
首先recyclerview适配器继承自RecyclerView.Adapter 不是之前的那个 public class MyDetailsAdapter extends RecyclerView.Adapter { //设置常量 //平台 private static final int LEFT = 1; //用户 private static final int RIGHT = 0; //头部 private static final int TITLE = 3; @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup viewGroup, int viewType) { RecyclerView.ViewHolder holder = getViewHolderByViewType(viewType); return holder; } /** * 根据不同的position,设置不同的ViewType * position表示当前是第几个Item,通过position拿到当前的Item对象,然后判断这个item对象需要那种视图 */ @Override public int getItemViewType(int position) { if

Android中ListView与RecyclerView的基本使用(附Project压缩包)

旧巷老猫 提交于 2020-01-07 12:28:47
Android中ListView与RecyclerView的详解与使用【附Project压缩包】 ListView简介 ListView的最简单的使用 ListView的优化 RecyclerView RecyclerView的简单使用(其实一点也不简单) ListView简介 ListView可以用来展示数据的控件,最熟悉的像qq里的好友列表,就可以通过Listview来实现。ListView可以理解为一个由很多行view组成的列表,而view通过绑定item改变自身的样式。 ListView的最简单的使用 一:在activiy_main.XML中写入一个ListView < ListView android : layout_width = "match_parent" android : layout_height = "match_parent" android : id = "@+id/l_1" / > 二:在MainActivity中声明数据,这里以一组String数据为例 private String [ ] data = { "1" , "2" , "3" , "4" , "5" } ; 三:构造适配器,这里的适配器泛型指向String类型,item是系统内置的item ArrayAdapter < String > adapter = new