瀑布流waterfall的使用以及Bitmap图像优化原理总结

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

瀑布流waterfall的使用以及Bitmap图像优化原理总结

Android的Bitmap图像优化的原文链接:

Android的Bitmap图像优化的译文链接:

瀑布流的功能实现目标:

1.瀑布流,可简单配置显示列数。

2.下拉刷新

3.上拉加载更多

实现瀑布流的代码目录:

1、要实现这种特殊的瀑布流布局界面,要自定义个View,自定义View的包:huewu.pla.lib

MutiColumnListView ----自定义的瀑布流View

PLA_ListView ------MutiColumnListView的父类,主要是对瀑布流的显示的方法。

PLA_AbsListView -----PLA_ListView 的父类,是自定义listview的基类,对绑定数据进行处理。

PLA_AdapterView----自定义View的是数据适配器,

PLA_AbsListView 的父类。

PLA_HeaderViewListAdapter ----- 自定义View的头布局和尾布局的适配器,在PLA_AbsListView用到。

2、要实现上拉下拉功能,需要对MutiColumnListView进行重写,把头尾和各种手势处理加上:me.maxwin.view

XListView-----对MutiColumnListView进行重写,把头尾和各种手势处理加上,项目中直接用到的类。

XListViewFooter-----添加的尾布局。

XListViewHeader-----添加的头布局。

3、这里瀑布流加载的是网络图片,图片下载显示工具包:

com.example.android.bitmapfun.util

bitmapfun是google教程提供的工具包,是对图片的异步加载、缓存的工具,使用很简单,就一个方法把图片url和imageview控件传进去就可以。其显现逻辑感兴趣的可以学一下。

4、由于瀑布流图片显示的自动调整宽高,就要对imageview进行重写:com/dodowaterfall/widget/ScaleImageView.java

widget包里的另外还有两个自定义View不知道干啥使得,项目中也没用到,暂时先不管了。

5、工具包和自定义view准备好,调用自己界面显示瀑布流:

com/huewu/pla/sample/PullToRefreshSampleActivity.java

图片数据显示首先通过网络获得图片的数据,图片数据的实体类包:com.dodola.model

再按照实现流程分析下,瀑布流功能的实现逻辑:

1、获取网络图片数据,http+json流程没必要说,看下获得的数据:

try {

if (null != json) {

JSONObject newsObject = new JSONObject(json);

JSONObject jsonObject = newsObject.getJSONObject("data");

JSONArray blogsJson = jsonObject.getJSONArray("blogs");

for (int i = 0; i < blogsJson.length(); i++) {

JSONObject newsInfoLeftObject = blogsJson.getJSONObject(i);

DuitangInfo newsInfo1 = new DuitangInfo();

newsInfo1.setAlbid(newsInfoLeftObject.isNull("albid") ? "" : ne wsInfoLeftObject.getString("albid"));

newsInfo1.setIsrc(newsInfoLeftObject.isNull("isrc") ? "" : news InfoLeftObject.getString("isrc"));

newsInfo1.setMsg(newsInfoLeftObject.isNull("msg") ? "" : newsIn foLeftObject.getString("msg"));

newsInfo1.setHeight(newsInfoLeftObject.getInt("iht"));

duitangs.add(newsInfo1);

}

}

} catch (JSONException e) {

e.printStackTrace();

}

获得id、isrc、msg这三个一看就知道是什么,iht这个是图片的高,刚看的时候,不知道具体是干啥用的,肯定是来控制图片的显示宽高。

2、自定义adapter对imageview设置数据:

@Override

public View getView(int position, View convertView, ViewGroup paren t) {

ViewHolder holder;

DuitangInfo duitangInfo = mInfos.get(position);

if (convertView == null) {

LayoutInflater layoutInflator = LayoutInflater.from(parent.getContext ());

convertView = layoutInflator.inflate(s_list, null);

holder = new ViewHolder();

holder.imageView = (ScaleImageView) convertView.findViewById(R.id.new s_pic);

holder.contentView = (TextView) convertView.findViewById(R.id.news_ti tle);

convertView.setTag(holder);

相关文档
最新文档