让RecyclerView更通用

何为通用

用过RecyclerView的都知道它没有为我们提供像ListView中类似addHeaderView,addFooterView,setOnItemClickListener,setOnItemLongClickListener的接口,另外还有底部自动加载更多,这些都是列表使用中很常见的功能,所以如果我们使用RecyclerView来实现列表的话就需要自己实现这些功能。本文主要介绍这些通用功能的实现方式,使得RecyclerView使用起来和ListView一样方便。

RecyclerView子View宽度不充满父容器

今天用RecyclerView写了简单的例子,使用的是LinearLyaoutManager,子View采用的TextView,准备写个简单的List展示,我的RecyclerViewTextView的宽度布局都采用的是match_parent,结果显示出来之后发现子View的宽度压根就没有充满屏幕。之前也用过RecyclerView,但是没有遇到过这个问题,很不解啊~~~网上查阅之后说是在AdapteronCreateViewHolder方法中构造View的时候不能用如下方式:

1
View.inflate(mContext, R.layout.item_layout, null);

必须要换成下面的构造方式把parent带进去:

1
LayoutInflater.from(mContext).inflate(R.layout.item_layout, parent, false);

而我的Adapter中刚好就使用的是第一种方式,于是立马换成下面的第二种方式实现,运行看效果,果然充满了屏幕~~~这个问题还真是奇葩啊~

RecyclerView下拉刷新上拉加载

背景

作为ListViewGridView的替代者, RecyclerView以它的灵活性著称,而且有着更好更完善的缓存处理机制。但是在使用RecyclerVew的过程中有个很明显的问题:RecyclerView没有为开发者提供addHeadViewaddFooterView两个接口,这就为RecyclerView的下拉刷新和上拉加载实现增加了难度,本文就为大家介绍RecyclerView的下拉刷新和上拉加载的实现方式。

AndroidStudio使用技巧

AndroidStudio使用技巧

本文主要是记录从我使用AndroidStudio以来遇到的一些问题和一些技巧。


  1. 初次使用AndroidStudio,第一次创建Android工程编译时会比较慢,这中间涉及到三个过程:
    1. 可能会去下载最新的SDK,所以在创建工程之前可以先将SDK更新完成
    2. AndroidStudio工程会使用gradle构建,因此会联网下载gradle,这个过程比较慢要耐心等待
    3. 下载工程中的一些依赖包,比如junit
  2. 有时候使用AndroidStudio进行rebuild和clean时,会报错如下:Failed to complete gradle execution cause by...,一般此错误可以通过设置gradle的VM参数解决: -Xmx256m(设置方式为:File > Setting > Gradle > Gradle Vm Option),如果此方法无效,可以选择直接升级AS的版本到最新版本再试,还有其他可能的原因是工程JDK版本与AS设置的JDK版本不同
  3. 设置AndroidStudio的不同主题背景: File > Setting > Appearance&Behavior > Appearance 下的Theme可以选择你要使用的主题

UC浏览器首页滑动动画实现

实现效果


RecyclerView绘制原理

RecyclerView基本使用

1
2
3
4
5
6
7
8
9
10
//首先设置RecyclerView的布局管理模式
mRecyclerView.setLayoutManager(new LinearLayoutManager(this));
mAdapter = new MyAdapter(getData());
//设置Item项的UI装饰器
mRecyclerView.addItemDecoration(new RecyclerItemDecoration(LinearLayoutManager.VERTICAL));
//设置Item项的不同操作的动画
mRecyclerView.setItemAnimator(new DefaultItemAnimator());
//设置数据开始装配
mRecyclerView.setAdapter(mAdapter);
RecyclerView原理分析

基于OkHttp的封装库TigerOkHttp的使用

在前面熟悉了OkHttp的用法之后,为了简化用法同时适用于我的项目,我针对OkHttp进行了更进一步的封装(源码及其Demo地址在https://github.com/huyongli/TigerOkHttp)

TigerOKHttp特性

封装之后其支持的功能特性包括如下:

  1. 一般的get同步阻塞请求和异步请求

  2. 一般的post同步阻塞请求和异步请求

  3. 实现了文件上传功能(包含文件上传进度回调显示)

  4. 实现了大文件下载功能,只需要指定文件下载路径即可,也包含了下载进度的回调显示

  5. 实现了请求结果的自动解析,用户也可以根据需求扩展自定义结果解析类

  6. 对所有请求都支持直接将结果解析转换为JavaBean对象或集合

  7. 支持对返回结果结构的自定义,例如设置返回结果结构为:{flag:1|0,error:错误信息,result:请求结果},结果解析的时候会按照此结构进行结果解析

  8. 支持取消某个请求

Android中OkHttp的使用

前段时间研究了下Android里面非常火爆的网络请求库OkHttp,这篇文章主要来介绍下OkHttp的常用请求的使用方式,后面一篇文章会介绍本人基于OkHttp封装的一个操作更简单、更适用于项目的网络请求库TigerOkHttp,其源码及Demo地址为:https://github.com/huyongli/TigerOkHttp

一、说明

对于OkHttp的基本介绍,以及为什么要使用OkHttp而不再使用HttpURLConnection或者是HttpClient,各位自己找度娘去,我这里就不再废话了。

使用OkHttp之前,需要先下载OkHttp.jar包,大家可以在https://github.com/square/okhttp去下载OkHttp的最新jar包以及源码,

同时因为OkHttp内部依赖okio,所以大家还要自行下载okio.jar包,下载地址在这里https://github.com/square/okio

Android百度地图导航功能的那些坑

实现步骤

  1. 首先要先在AndroidManifest.xml中注册导航服务

<service android:name="com.baidu.navi.location.f" android:enabled="true"></service>

  1. 添加相关的权限,我也不知道哪些是必须的,我直接把Demo里面的相关权限配置全部拉过来了

  2. 在导航之前要先调用BaiduNaviManager.getInstance().initEngine对导航引擎进行初始化。可以通过NaviEngineInitListener接口检查导航引擎初始化是否成功,同时通过LBSAuthManagerListener接口对API-Key进行Key校验是否成功,status结果为0代表key校验成功。

  3. 必须将Demo中assert目录下的两个文件BaiduNaviSDK_Resource_v1_0_0.png,channel拷贝到自己项目的assert目录下去,否则导航引擎无法初始化成功。

  4. 在导航引擎初始化成功后,调用导航功能前调用BaiduNaviManager.getInstance().checkEngineStatus(context)检测导航引擎是否初始化成功。

  5. 调用BaiduNaviManager.getInstance().launchNavigator开始导航。

基于openfire+smack开发Android即时聊天应用[五]-简易IM客户端效果图

经过几天时间对Openfire+Smack的研究,写了一个简单的Android端的IM客户端,给大家看看我的客户端的效果图,支持发送文本、图片、语音三种消息,群聊功能暂时没有集成上去。整个应用做的比较粗糙。

Demo代码地址请戳:https://github.com/huyongli/TigerIM

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×