日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android应用之《宋词三百首》(二)

發(fā)布時間:2024/3/26 Android 54 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android应用之《宋词三百首》(二) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

轉載自:http://blog.csdn.net/bear_huangzhen/article/details/25274303


接上回,上回我們講到MainActivity里面將所有的宋詞標題和作者顯示到界面的ListView中去,我們接下來的工作是通過點擊ListView的Item跳轉到ContentActivity里面去顯示單個宋詞的全部內容,跳轉代碼如下:

[java]?view plaincopy
  • <span?style="font-size:18px;">//?為ListView的Item設置點擊監(jiān)聽器??
  • ????????mListView.setOnItemClickListener(new?OnItemClickListener()?{??
  • ??
  • ????????????@Override??
  • ????????????public?void?onItemClick(AdapterView<?>?parent,?View?view,??
  • ????????????????????int?position,?long?id)?{??
  • ????????????????//?將當前被點擊的item所代表的詩詞對象的引用賦給currentSongCi??
  • ????????????????Global.currentSongCi?=?scList.get(position);??
  • ????????????????//?進行界面跳轉??
  • ????????????????Intent?intent?=?new?Intent(MainActivity.this,??
  • ????????????????????????ContentActivity.class);??
  • ????????????????startActivity(intent);??
  • ????????????}??
  • ????????});</span>??
  • 在這里,我用一個靜態(tài)變量將所點擊的ListView Item所代表的宋詞記錄下來,然后跳轉到ContentActivity。


    我們在來首先看一下ContentActivity的布局文件activity_content.xml的內容:

    [html]?view plaincopy
  • <span?style="font-size:18px;"><?xml?version="1.0"?encoding="utf-8"?>??
  • <LinearLayout?xmlns:android="http://schemas.android.com/apk/res/android"??
  • ????android:id="@id/ll_parent"??
  • ????android:layout_width="fill_parent"??
  • ????android:layout_height="fill_parent"??
  • ????android:background="@drawable/bg4"??
  • ????android:orientation="vertical"?>??
  • ??
  • ????<RelativeLayout??
  • ????????android:layout_width="fill_parent"??
  • ????????android:layout_height="46.0dip"??
  • ????????android:background="@drawable/toolbar"?>??
  • ??
  • ????????<TextView??
  • ????????????android:id="@id/tv_app_title"??
  • ????????????android:layout_width="wrap_content"??
  • ????????????android:layout_height="wrap_content"??
  • ????????????android:layout_centerHorizontal="true"??
  • ????????????android:layout_centerVertical="true"??
  • ????????????android:text="@string/app_name"??
  • ????????????android:textAppearance="?android:textAppearanceLarge"??
  • ????????????android:textColor="#ffffffff"?/>??
  • ??
  • ????????<Button??
  • ????????????android:id="@id/btn_back"??
  • ????????????android:layout_width="72.0dip"??
  • ????????????android:layout_height="46.0dip"??
  • ????????????android:layout_alignParentLeft="true"??
  • ????????????android:layout_centerVertical="true"??
  • ????????????android:background="@drawable/btn_left"??
  • ????????????android:paddingLeft="6.0dip"??
  • ????????????android:text="@string/back"??
  • ????????????android:textColor="#ffffffff"??
  • ????????????android:textSize="14.0sp"?/>??
  • ??
  • ????????<ImageView??
  • ????????????android:id="@id/iv_font_small"??
  • ????????????android:layout_width="wrap_content"??
  • ????????????android:layout_height="wrap_content"??
  • ????????????android:layout_alignParentRight="true"??
  • ????????????android:layout_centerVertical="true"??
  • ????????????android:src="@drawable/font_small"?/>??
  • ??
  • ????????<ImageView??
  • ????????????android:id="@id/iv_font_big"??
  • ????????????android:layout_width="wrap_content"??
  • ????????????android:layout_height="wrap_content"??
  • ????????????android:layout_centerVertical="true"??
  • ????????????android:layout_toLeftOf="@id/iv_font_small"??
  • ????????????android:src="@drawable/font_big"?/>??
  • ????</RelativeLayout>??
  • ??
  • ????<ScrollView??
  • ????????android:id="@id/scrollView1"??
  • ????????android:layout_width="fill_parent"??
  • ????????android:layout_height="0.0dip"??
  • ????????android:layout_margin="8.0dip"??
  • ????????android:layout_weight="1.0"??
  • ????????android:background="@drawable/item_bg2"?>??
  • ??
  • ????????<LinearLayout??
  • ????????????android:id="@id/linearLayout1"??
  • ????????????android:layout_width="fill_parent"??
  • ????????????android:layout_height="fill_parent"??
  • ????????????android:orientation="vertical"?>??
  • ??
  • ????????????<TextView??
  • ????????????????android:id="@id/tv_title"??
  • ????????????????style="@style/black_normal"??
  • ????????????????android:layout_width="fill_parent"??
  • ????????????????android:layout_height="wrap_content"??
  • ????????????????android:layout_margin="5.0dip"??
  • ????????????????android:text="標題"??
  • ????????????????android:textAppearance="?android:textAppearanceMedium"?/>??
  • ??
  • ????????????<LinearLayout??
  • ????????????????android:layout_width="fill_parent"??
  • ????????????????android:layout_height="1.0px"??
  • ????????????????android:layout_marginLeft="5.0dip"??
  • ????????????????android:layout_marginRight="5.0dip"??
  • ????????????????android:background="#ff666666"?/>??
  • ??
  • ????????????<TextView??
  • ????????????????android:id="@id/tv_author"??
  • ????????????????style="@style/black_normal"??
  • ????????????????android:layout_width="fill_parent"??
  • ????????????????android:layout_height="wrap_content"??
  • ????????????????android:layout_margin="5.0dip"??
  • ????????????????android:text="作者"??
  • ????????????????android:textAppearance="?android:textAppearanceSmall"?/>??
  • ??
  • ????????????<LinearLayout??
  • ????????????????android:layout_width="fill_parent"??
  • ????????????????android:layout_height="1.0px"??
  • ????????????????android:layout_marginLeft="5.0dip"??
  • ????????????????android:layout_marginRight="5.0dip"??
  • ????????????????android:background="#ff666666"?/>??
  • ??
  • ????????????<TextView??
  • ????????????????android:id="@id/tv_desc"??
  • ????????????????style="@style/black_normal"??
  • ????????????????android:layout_width="fill_parent"??
  • ????????????????android:layout_height="fill_parent"??
  • ????????????????android:layout_margin="5.0dip"??
  • ????????????????android:lineSpacingMultiplier="1.3"??
  • ????????????????android:text="注解"??
  • ????????????????android:textAppearance="?android:textAppearanceSmall"?/>??
  • ????????</LinearLayout>??
  • ????</ScrollView>??
  • ??
  • </LinearLayout></span>??
  • 這里,我們可以發(fā)現(xiàn),一首宋詞的標題、作者、內容分別對應三個TextView控件。

    接著我們再來看一下ContentActivity的內容:

    [java]?view plaincopy
  • <span?style="font-size:18px;">package?com.example.songcidemo.ui;??
  • ??
  • import?android.app.Activity;??
  • import?android.content.Intent;??
  • import?android.os.Bundle;??
  • import?android.text.Html;??
  • import?android.text.Spanned;??
  • import?android.util.Log;??
  • import?android.view.View;??
  • import?android.view.View.OnClickListener;??
  • import?android.view.Window;??
  • import?android.widget.Button;??
  • import?android.widget.ImageView;??
  • import?android.widget.TextView;??
  • ??
  • import?com.example.songcidemo.R;??
  • import?com.example.songcidemo.bean.SongCi;??
  • import?com.example.songcidemo.util.Global;??
  • ??
  • public?class?ContentActivity?extends?Activity?{??
  • ??
  • ????private?SongCi?sc;??
  • ??????
  • ????//字體變小按鈕??
  • ????private?ImageView?fontSmallImageView;??
  • ????//字體變大按鈕??
  • ????private?ImageView?fontBigImageView;??
  • ??????
  • ????//代表作者TextView和主體TextView的文本文字大小默認值??
  • ????private?float?defaultTextSize;??
  • ????//代表當前標題TextView的文本文字大小??
  • ????private?float?currentTitleTextSize;??
  • ????//代表當前作者TextView和主體TextView的文本文字大小??
  • ????private?float?currentTextSize;??
  • ??????
  • ????//代表標題TextView??
  • ????private?TextView?titleTextView;??
  • ????//代表作者TextView??
  • ????private?TextView?authTextView;??
  • ????//代表主要內容TextView??
  • ????private?TextView?descTextView;??
  • ??????
  • ????//代表返回按鈕??
  • ????private?Button?backBtn;??
  • ??
  • ????@Override??
  • ????protected?void?onCreate(Bundle?savedInstanceState)?{??
  • ????????super.onCreate(savedInstanceState);??
  • ????????requestWindowFeature(Window.FEATURE_NO_TITLE);??
  • ????????setContentView(R.layout.activity_content);??
  • ??
  • ????????setupViews();??
  • ????}??
  • ??????
  • ????/**?
  • ?????*?初始化界面?
  • ?????*/??
  • ????private?void?setupViews()?{??
  • ??????????
  • ????????//通過findviewbyid()方法獲取三個TextView控件??
  • ????????titleTextView?=?(TextView)?findViewById(R.id.tv_title);??
  • ????????authTextView?=?(TextView)?findViewById(R.id.tv_author);??
  • ????????descTextView?=?(TextView)?findViewById(R.id.tv_desc);??
  • ??????????
  • ????????//將currentSongCi賦給類變量sc??
  • ????????sc?=?Global.currentSongCi;??
  • ????????//通過get()方法獲取標題、作者、內容的值???
  • ????????String?title?=?sc.getTitle();??
  • ????????String?auth?=?sc.getAuth();??
  • ????????String?desc?=?sc.getDesc();??
  • ??????????
  • ????????//將宋詞的內容顯示到三個TextView控件??
  • ????????titleTextView.setText(title);??
  • ????????authTextView.setText(auth);??
  • ????????//對字符串進行HTML格式化??
  • ????????Spanned?sp?=?Html.fromHtml(desc);??
  • ????????descTextView.setText(sp);??
  • //??????descWebView.loadDataWithBaseURL("fake://not/needed",?desc,?"text/html",??
  • //??????????????"utf-8",?"");??
  • ??????????
  • ????????Log.v("ContentActivity",?""?+?titleTextView.getTextSize());??
  • ????????Log.v("ContentActivity",?""?+?authTextView.getTextSize());??
  • ????????Log.v("ContentActivity",?""?+?descTextView.getTextSize());??
  • ??????????
  • ????????//初始化字體大小變量??
  • ????????defaultTextSize?=?14;??
  • ????????currentTitleTextSize?=?20;??
  • ????????currentTextSize?=?14;??
  • ??????????
  • ????????fontBigImageView?=?(ImageView)?findViewById(R.id.iv_font_big);??
  • ????????fontSmallImageView?=?(ImageView)?findViewById(R.id.iv_font_small);???
  • ??????????
  • ????????//為fontBigImageView設置監(jiān)聽器??
  • ????????fontBigImageView.setOnClickListener(new?OnClickListener()?{??
  • ??????????????
  • ????????????@Override??
  • ????????????public?void?onClick(View?v)?{??
  • ????????????????currentTitleTextSize++;??
  • ????????????????currentTextSize++;??
  • ????????????????if((currentTextSize-defaultTextSize)?>?5){??
  • ????????????????????currentTitleTextSize--;??
  • ????????????????????currentTextSize--;??
  • ????????????????}else{??
  • ????????????????????setFont();??
  • ????????????????}??
  • ????????????}??
  • ????????});??
  • ??????????
  • ????????//為fontSmallImageView設置監(jiān)聽器??
  • ????????fontSmallImageView.setOnClickListener(new?OnClickListener()?{??
  • ??????????????
  • ????????????@Override??
  • ????????????public?void?onClick(View?v)?{??
  • ????????????????currentTitleTextSize--;??
  • ????????????????currentTextSize--;??
  • ????????????????if((defaultTextSize-currentTextSize)?>?5){??
  • ????????????????????currentTitleTextSize++;??
  • ????????????????????currentTextSize++;??
  • ????????????????}else{??
  • ????????????????????setFont();??
  • ????????????????}??
  • ????????????}??
  • ????????});??
  • ??????????
  • ????????backBtn?=?(Button)?findViewById(R.id.btn_back);??
  • ??????????
  • ????????//為backBtn設置監(jiān)聽器??
  • ????????backBtn.setOnClickListener(new?OnClickListener()?{??
  • ??????????????
  • ????????????@Override??
  • ????????????public?void?onClick(View?v)?{??
  • ????????????????//返回到主界面??
  • ????????????????Intent?intent?=?new?Intent(ContentActivity.this,?MainActivity.class);??
  • ????????????????startActivity(intent);??
  • ????????????}??
  • ????????});??
  • ??????????
  • ????}??
  • ??????
  • ????/**?
  • ?????*?設置界面字體大小?
  • ?????*/??
  • ????private?void?setFont(){??
  • ????????titleTextView.setTextSize(currentTitleTextSize);??
  • ????????authTextView.setTextSize(currentTextSize);??
  • ????????descTextView.setTextSize(currentTextSize);??
  • ????}??
  • ??
  • }??
  • </span>??

  • 為了將desc里面的諸如<p><br>這寫HTML元素體現(xiàn)出來,這里需要一點小小的轉換,就是這句
    [java]?view plaincopy
  • <span?style="font-size:18px;">Spanned?sp?=?Html.fromHtml(desc);</span>??

  • 這個Activity中還實現(xiàn)了一個功能就是可以改變界面文字的大小。

    界面截圖如下:



    最后我們再來實現(xiàn)一個主界面的搜索功能,我的思想是這樣的定義一個ArrayList<SongCi> resultList這樣的鏈表,因為已經(jīng)有了scList里面存儲的是全部的宋詞,用for循環(huán)遍歷scList,將滿足搜索條件的結果加入到resultList當中去,搜索完成后就將ListView顯示resultList里面的內容,關鍵代碼如下:

    [java]?view plaincopy
  • //為searchDialogBtn設置點擊監(jiān)聽器??
  • ????????searchDialogBtn.setOnClickListener(new?OnClickListener()?{??
  • ??
  • ????????????@Override??
  • ????????????public?void?onClick(View?v)?{??
  • ????????????????switch?(currentSearchRadioButtonId)?{??
  • ????????????????case?R.id.radio0:??
  • ????????????????????searchSongCi(SEARCH_TYPE_TITLE);??
  • ????????????????????break;??
  • ????????????????case?R.id.radio1:??
  • ????????????????????searchSongCi(SEARCH_TYPE_AUTHOR);??
  • ????????????????????break;??
  • ????????????????case?R.id.radio2:??
  • ????????????????????searchSongCi(SEARCH_TYPE_CONTENT);??
  • ??
  • ????????????????default:??
  • ????????????????????break;??
  • ????????????????}??
  • ????????????????//將搜索對話框消失掉??
  • ????????????????if?(searchDialog.isShowing())?{??
  • ????????????????????searchDialog.dismiss();??
  • ????????????????}??
  • ??????????????????
  • ????????????????//初始化結果列表適配器resultSongCiAdapter??
  • ????????????????if?(resultSongCiAdapter?==?null)?{??
  • ????????????????????resultSongCiAdapter?=?new?MainListViewAdapter(??
  • ????????????????????????????MainActivity.this,?resultList);??
  • ????????????????}else{??
  • ????????????????????//通知適配器,源數(shù)據(jù)已改變??
  • ????????????????????resultSongCiAdapter.notifyDataSetChanged();??
  • ????????????????}??
  • ??
  • ????????????????mListView.setAdapter(resultSongCiAdapter);??
  • ??
  • ????????????}??
  • ????????});??

  • 自定義方法的內容是:

    [java]?view plaincopy
  • /**?
  • ?????*?通過傳遞過來的參數(shù)來搜索宋詞結果?
  • ?????*??
  • ?????*?@param?searchType????按哪種條件(標題、詞人、內容)進行搜索?
  • ?????*/??
  • ????private?void?searchSongCi(int?searchType)?{??
  • ??????????
  • ????????//初始化resultList??
  • ????????if?(resultList?==?null)?{??
  • ????????????resultList?=?new?ArrayList<SongCi>();??
  • ????????}else{??
  • ????????????resultList.clear();??
  • ????????}??
  • ??????????
  • ????????//獲取搜索關鍵詞??
  • ????????String?searchWords?=?searchEditText.getText().toString().trim();??
  • ????????if?(searchWords?==?null?||?searchWords.equals(""))?{??
  • ????????????return;??
  • ????????}??
  • ??
  • ????????for?(SongCi?sc?:?scList)?{??
  • ????????????switch?(searchType)?{??
  • ????????????case?SEARCH_TYPE_TITLE:??
  • ????????????????String?title?=?sc.getTitle();??
  • ????????????????//如果標題中包含關鍵詞,就將當前的宋詞對象加入到結果鏈表中??
  • ????????????????if?(title.contains(searchWords))?{??
  • ????????????????????resultList.add(sc);??
  • ????????????????}??
  • ????????????????break;??
  • ????????????case?SEARCH_TYPE_AUTHOR:??
  • ????????????????String?auth?=?sc.getAuth();??
  • ????????????????//如果作者名中包含關鍵詞,就將當前的宋詞對象加入到結果鏈表中??
  • ????????????????if?(auth.contains(searchWords))?{??
  • ????????????????????resultList.add(sc);??
  • ????????????????}??
  • ????????????????break;??
  • ????????????case?SEARCH_TYPE_CONTENT:??
  • ????????????????String?desc?=?sc.getDesc();??
  • ????????????????//如果內容中包含關鍵詞,就將當前宋詞對象加入到結果鏈表中??
  • ????????????????if?(desc.contains(searchWords))?{??
  • ????????????????????resultList.add(sc);??
  • ????????????????}??
  • ????????????????break;??
  • ??
  • ????????????default:??
  • ????????????????break;??
  • ????????????}??
  • ????????}??
  • ??
  • ????}??

  • 搜索界面截圖如下:



    最后附上整個項目的源碼:

    Android應用之《宋詞三百首》

    總結

    以上是生活随笔為你收集整理的Android应用之《宋词三百首》(二)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。