Material Design控件使用(完結(jié)篇)

本文整合前面四篇的控件,再結(jié)合豆瓣讀書的API,做了一個(gè)搜索書籍和查看書籍信息的Demo。

項(xiàng)目依賴庫

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:design:22.2.0'
    compile 'com.android.support:appcompat-v7:22.2.0'
    compile 'com.android.support:cardview-v7:22.2.0'
    compile 'com.android.support:recyclerview-v7:22.2.0'

    compile 'com.github.bumptech.glide:glide:3.6.0'
    compile 'de.hdodenhof:circleimageview:1.3.0'
    compile 'com.loopj.android:android-async-http:1.4.7'
    compile 'com.google.code.gson:gson:2.3'
    compile 'com.afollestad:material-dialogs:0.7.6.0'
}

書籍列表

使用了RecyclerView和CardView進(jìn)行布局。

RecyclerView參考文章:Material Design控件使用(一)

CardView參考文章:Material Design控件使用(三)

圖片的顯示,使用了glide,用法比較簡單

 Glide.with(holder.ivBook.getContext())
                    .load(book.getImage())
                    .fitCenter()
                    .into(holder.ivBook);

搜索書籍

  • 搜索按鈕(FAB)點(diǎn)擊后,使用material-dialogs顯示dialog
 new MaterialDialog.Builder(getActivity())
                        .title(R.string.search)
                        .input(R.string.input_hint, R.string.input_prefill, new MaterialDialog.InputCallback() {
                            @Override
                            public void onInput(MaterialDialog dialog, CharSequence input) {
                                if (!TextUtils.isEmpty(input)) {
                                    doSearch(input.toString());
                                }
                            }
                        }).show();
  • 使用android-async-http發(fā)送HTTP請求,gson解析數(shù)據(jù)
    public static void searchBooks(String name, final IBookResponse<List<Book>> response) {
        RequestParams params = new RequestParams();
        params.put("q", name);
        params.put("start", 0);
        params.put("end", 50);
        client.get(getAbsoluteUrl("book/search"), params, new AsyncHttpResponseHandler() {
            @Override
            public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) {
                try {
                    Gson gson = new Gson();
                    JSONObject json = new JSONObject(new String(responseBody));
                    JSONArray jaBooks = json.optJSONArray("books");
                    List<Book> books = gson.fromJson(jaBooks.toString(), new TypeToken<List<Book>>() {
                    }.getType());
                    response.onData(books);

                } catch (Exception e) {
                    e.printStackTrace();
                }

            }

            @Override
            public void onFailure(int statusCode, Header[] headers, byte[] responseBody, Throwable error) {

            }
        });
    }
  • 獲取數(shù)據(jù)后,更新RecyclerView
 private void doSearch(String keyword) {
        mProgressBar.setVisibility(View.VISIBLE);
        Book.searchBooks(keyword, new Book.IBookResponse<List<Book>>() {
            @Override
            public void onData(List<Book> books) {
                mAdapter = new MyAdapter(getActivity(), books);
                mRecyclerView.setAdapter(mAdapter);
                mProgressBar.setVisibility(View.GONE);
            }
        });
    }

顯示書籍信息

使用AppBarLayout+ TabLayout+ViewPager顯示書籍信息,
具體布局參考:Material Design控件使用(四)

側(cè)邊菜單欄

菜單欄實(shí)現(xiàn)請參考:Material Design控件使用(二)

項(xiàng)目源碼已發(fā)布到Github
APK下載地址:demo.apk
源碼地址:MaterialDesignExample

本文作者: 陽春面
原文地址:http://www.aswifter.com/2015/07/02/Material-Design-Example-5/

歡迎關(guān)注我的微信公眾號,分享Android 開發(fā),IOS開發(fā),Swift開發(fā)和互聯(lián)網(wǎng)內(nèi)容
微信號:APP開發(fā)者

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 178,765評論 25 709
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,506評論 19 139
  • 為什么你的學(xué)習(xí)方法可能是錯(cuò)的 1、在學(xué)校(大學(xué))你的學(xué)習(xí)方法:選課單~必修課~選修課~教學(xué)大綱和課表~學(xué)習(xí)記筆記~...
    瞰川閱讀 347評論 0 0
  • 從備孕小白到備孕大神,我終于迎來了寶寶 2014年10月1日,我跟老公結(jié)束了5年的戀愛期,舉行了結(jié)婚儀式。結(jié)婚那天...
    懷孕那些事閱讀 364評論 0 0
  • 我遇到一個(gè)項(xiàng)目,并且對這個(gè)項(xiàng)目,產(chǎn)品,之類的,都很好,但是周圍人,朋友,都敷衍的說這個(gè)可以做,前景也好,一旦說要投...
    加奶咖啡閱讀 418評論 0 0

友情鏈接更多精彩內(nèi)容