2016-9-22

2016-9-22

1.SwipeRefreshLayout调用

//设置下拉出现小圆圈是否是缩放出现,出现的位置,最大的下拉位置
mySwipeRefreshLayout.setProgressViewOffset(true, 50, 200);

//设置下拉圆圈的大小,两个值 LARGE, DEFAULT
mySwipeRefreshLayout.setSize(SwipeRefreshLayout.LARGE);

// 设置下拉圆圈上的颜色
mySwipeRefreshLayout.setColorSchemeResources(
    android.R.color.holo_blue_bright,
    android.R.color.holo_green_light,
    android.R.color.holo_orange_light,
    android.R.color.holo_red_light);

// 通过 setEnabled(false) 禁用下拉刷新
mySwipeRefreshLayout.setEnabled(false);

// 设定下拉圆圈的背景
mSwipeLayout.setProgressBackgroundColor(R.color.red);

/*
 * 设置手势下拉刷新的监听
 */
mySwipeRefreshLayout.setOnRefreshListener(
    new SwipeRefreshLayout.OnRefreshListener() {
        @Override
        public void onRefresh() {//刷新动画完成后回调此方法

        }
    }
);
setRefreshing(false) 手动设置刷新动画完成
setRefreshing(true) 手动设置刷新动画开始。

2.Android Butterknife Zelezny为ButterKnife生成代码的studio插件

3.listview tips

mListView.getChildAt(int position) position表示的是在当前屏幕显示区域中当前item的索引
mListView.getChildCount()则表示当前屏幕显示区域中,总共有多少个item
AbsListView.OnScrollListener mOnScrollListener = new AbsListView.OnScrollListener() {  
    @Override  
    public void onScrollStateChanged(AbsListView view, int scrollState) {  
        //OnScrollListener.SCROLL_STATE_IDLE是当屏幕停止滚动时
        //OnScrollListener.SCROLL_STATE_TOUCH_SCROLL是当用户在以触屏方式滚动屏幕并且手指仍然还在屏幕上时
        //OnScrollListener.SCROLL_STATE_FLING是当用户由于之前划动屏幕并抬起手指,屏产生惯性滑动时
    }  

    @Override  
    public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { 
        //第一个参数AbsListView view:是当前listview的对象
        //第二个参数int firstVisibleItem:表示当前第一个可见的item在listview所有item中的索引,这里需要非常注意,
        //firstVisibleItem与getChildAt(int position)中的参数position的意义不同,firstVisibleItem是指在整个ListView中
        //的位置。而getChildAt(int position)中参数position传的是当前屏幕显示区域中item的索引,屏幕中第一个item的view可
        //以通过getChildAt(0)得到。
        //第三个参数int visibleItemCount:表示当前屏幕中可见的有几条item
        //第四个参数int totalItemCount:表示当前listview总共有多少条item,得到的值与adapter.getCount()的值相同。 
        View firstChild = view.getChildAt(0);  
        if (firstChild == null) return;  
        int top = firstChild.getTop();  
        /** 
         * firstVisibleItem > mFirstPosition表示向下滑动一整个Item 
         * mFirstTop > top表示在当前这个item中滑动 
         */  
        isScrollDown = firstVisibleItem > mFirstPosition || mFirstTop > top;  
        mFirstTop = top;  
        mFirstPosition = firstVisibleItem;  
    }  
};  

4.Gson无法解析null

Gson gson = GsonBuilder().registerTypeAdapterFactory(new NullStringToEmptyAdapterFactory()).create();


public static class NullStringToEmptyAdapterFactory<T> implements TypeAdapterFactory {
    public <T> TypeAdapter<T> create(Gson gson, TypeToken<T> type) {

        Class<T> rawType = (Class<T>) type.getRawType();
        if (rawType != String.class) {
            return null;
        }
        return (TypeAdapter<T>) new StringAdapter();
    }
}

public static class StringAdapter extends TypeAdapter<String> {
    public String read(JsonReader reader) throws IOException {
        if (reader.peek() == JsonToken.NULL) {
            reader.nextNull();
            return "";
        }
        return reader.nextString();
    }
    public void write(JsonWriter writer, String value) throws IOException {
        if (value == null) {
            writer.nullValue();
            return;
        }
        writer.value(value);
    }
}

猜你喜欢

转载自blog.csdn.net/a90123/article/details/52672981