傳送門:上一節
玄鐵劍
金庸武俠第一神劍!劍魔獨孤求敗四十歲前持之橫行天下,後為神鵰俠楊過所得,持之亦無敵於天下。神鵰俠隱退前將此劍贈與小東邪郭襄。襄陽城破前,郭靖、黃蓉夫婦請高明工匠熔之鑄成倚天劍、屠龍刀二神兵,並藏《九陰真經》、《降龍十八掌掌譜》與《武穆遺書》於其中。此劍劍身長愈三尺,兩邊劍鋒均為鈍口,劍尖圓圓似是半球,通體深黑,卻隱隱透出紅光。劍以玄鐵製成,共重八八六十四斤。玄鐵乃天下至寶,便是要得一兩也是絕難,尋常刀槍劍戟之中,只要加入半兩數錢,凡鐵立成利器。“重劍無鋒,大巧不工”,其中境界,遠勝世上諸般最巧妙的劍招。越是平平無奇的劍招,對方越難抗禦。如挺劍直刺,只要勁力強猛,威力遠比變幻奇妙的劍招更大。
本節我們學習如何利用Android平台“玄鐵劍”TextView導航到一個Activity,下面給出該情景的案例:
一、案例技術要點
1.android.text.SpannableString:提供一個總體文本是不可變的,但是支援局部對象(它所標記的)可以附加或分離。
2.SpannableString類setSpan(...):設定連結地址、連結顯示內容和附加內容應用效果。
3.Spanned.SPAN_EXCLUSIVE_EXCLUSIVE:表示在當前文本前端和後端新增字元均不採用當前顯示效果。
4.android.text.method.LinkMovementMethod:提供超連結功能。TextView需要此功能時引入該類的執行個體即可。
二、案例代碼陳列
AndroidManifest.xml
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.android.textview" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="15" /> <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name=".TextViewMainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".TextViewOneActivity" /> <activity android:name=".TextViewTwoActivity" /> </application></manifest>
strings.xml
<resources> <string name="app_name">Textview單擊連結彈出Activity</string></resources>
main.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" > <TextView android:id="@+id/tv1" android:layout_width="match_parent" android:layout_height="wrap_content" android:textSize="20sp" /> <TextView android:id="@+id/tv2" android:layout_width="match_parent" android:layout_height="wrap_content" android:textSize="20sp" android:layout_marginTop="20dp" /> </LinearLayout>
TextViewMainActivity.java
package com.android.textview;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.text.SpannableString;import android.text.Spanned;import android.text.method.LinkMovementMethod;import android.text.style.ClickableSpan;import android.view.View;import android.widget.TextView;/** * TextView案例三:單擊連結彈出Activity * @author lynnli1229 */public class TextViewMainActivity extends Activity { private TextView textView1, textView2; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); textView1 = (TextView) findViewById(R.id.tv1); textView2 = (TextView) findViewById(R.id.tv2); String textStr1 = "點選連結到TextViewOneActivity"; String textStr2 = "點選連結到TextViewTwoActivity"; //拆分字串 SpannableString ss1 = new SpannableString(textStr1); SpannableString ss2 = new SpannableString(textStr2); ss1.setSpan(new ClickableSpan() { @Override public void onClick(View widget) { Intent intent = new Intent(TextViewMainActivity.this, TextViewOneActivity.class); startActivity(intent); } }, 0, textStr1.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); ss2.setSpan(new ClickableSpan() { @Override public void onClick(View widget) { Intent intent = new Intent(TextViewMainActivity.this, TextViewTwoActivity.class); startActivity(intent); } }, 0, textStr2.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); textView1.setText(ss1); textView2.setText(ss2); textView1.setMovementMethod(LinkMovementMethod.getInstance()); textView2.setMovementMethod(LinkMovementMethod.getInstance()); }}
TextViewOneActivity.java
package com.android.textview;import android.app.Activity;import android.os.Bundle;public class TextViewOneActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setTitle("This is TextViewOneActivity"); }}
TextViewTwoActivity.java
package com.android.textview;import android.app.Activity;import android.os.Bundle;public class TextViewTwoActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setTitle("This is TextViewTwoActivity"); }}
三、案例效果展示
傳送門:下一節