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);
    }
}
發佈了46 篇原創文章 · 獲贊 1 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章