Android開發教學
Android 開發環境配置
Android 架構
Android 應用組件
Android Hello World示例
Android 資源組織和訪問
Android Activity
Android Service
Android廣播接收器
Android內容提供者
Android碎片/片段
Android Intent過濾器
Android UI佈局
Android LinearLayout
Android RelativeLayout
Android TableLayout
Android AbsoluteLayout
Android FrameLayout
Android ListView
Android GridView
Android UI控件
Android TextView
Android EditText
Android AutoCompleteTextView
Android Button
Android ImageButton
Android CheckBox
Android ToggleButton
Android RadioButton
Android RadioGroup
Android事件處理
Android樣式和主題
Android樣式示例
Android主題示例
Android自定義組件
Android拖放
Android通知
Android基於位置服務
Android發送電子郵件
Android發送短信/SMS
Android撥打電話
發佈Android應用
ArrayAdapter
SimpleCursorAdapter
Android ProgressDialog
Android Spinner
使用活動代碼自定義Android組件
使用佈局文件自定義Android組件
Android自定義組件及屬性
Android Alertdialog(警告對話框)
Android Animation(動畫)實例
Android音頻捕獲(錄音)
Android音頻管理器實例
Android AutoCompleteTextView(自動完成)實例
Android最佳實踐
Android Bluetooth(藍牙)實例
Android Camera(攝像頭)
Android Clipboard(複製/剪貼板)
Android自定義字體
Android數據備份
Android Gestures/手勢
Android圖片效果
Android圖片切換
Android內部存儲
Android JetPlayer實例
Android JSON解析器
Android加載Spinner
Android本地化
Android登錄實例
Android MediaPlayer(多媒體播放)

Android Clipboard(複製/剪貼板)

Android提供的剪貼板框架,複製和粘貼不同類型的數據。數據可以是文本,圖像,二進制流數據或其它複雜的數據類型。

Android提供ClipboardManager、ClipData.Item和ClipData庫使用複製和粘貼的框架。爲了使用剪貼板的框架,需要把數據轉化爲剪輯對象,然後把該對象爲全系統剪貼板。

爲了使用剪貼板,需要通過調用getSystemService()方法來實例化ClipboardManager的對象。它的語法如下:

ClipboardManager myClipboard; myClipboard = (ClipboardManager)getSystemService(CLIPBOARD_SERVICE);

複製數據

需要做的下一件事就是通過調用ClipData類的數據方法的相應類型來實例化ClipData對象。如果文本數據在newPlainText方法被調用。必須將數據設置爲剪貼板管理器對象的剪輯。它的語法如下:

ClipData myClip; String text = "hello world"; myClip = ClipData.newPlainText("text", text); myClipboard.setPrimaryClip(myClip);

ClipData對象可以採取這三種形式和下面的函數用於創建的那些形式。

Sr.No

ClipData形式與方法

1

Text
newPlainText(label, text)
返回ClipData對象,其單個ClipData.Item對象包含一個文本字符串

2

URI
newUri(resolver, label, URI)
返回ClipData對象,其單ClipData.Item對象包含一個URI

3

Intent
newIntent(label, intent)
返回ClipData對象,其單ClipData.Item對象包含意圖

粘貼數據

爲了粘貼數據,先要通過調用getPrimaryClip()方法拿到剪輯。並從點擊就可 ClipData.Item 對象的項目。從對象將得到數據。它的語法如下:

ClipData abc = myClipboard.getPrimaryClip(); ClipData.Item item = abc.getItemAt(0); String text = item.getText().toString();

除了這些方法,也有用於管理剪貼板框架提供 ClipboardManager類的其他方法。這些方法如下:

Sr.No

方法及說明

1

getPrimaryClip()
這個方法只是返回剪貼板上的當前主片段

2

getPrimaryClipDescription()
此方法返回剪貼板上的當前主剪輯的說明,但不是它的數據的一個拷貝

3

hasPrimaryClip()
如果當前剪貼板上的主要片段此方法返回true

4

setPrimaryClip(ClipData clip)
此方法將剪貼板上的當前主片段

5

setText(CharSequence text)
這種方法可直接用於複製文本到剪貼板

6

getText()
這種方法可直接用於獲取剪貼板複製的文本

例子

這裏有一個例子演示如何使用ClipboardManager類。它創建了一個基本的複製粘貼應用程序,可讓您複製的文本,然後通過剪貼板粘貼。

爲了試驗這個例子,可以在實際設備或模擬器運行此程序。

Steps

描述

1

使用Android Studio創建Android應用程序,並將其命名爲:Clipboard 。創建這個項目時確保目標SDK編譯在Android SDK中的最新版本或使用更高級別的API。

2

修改 src/MainActivity.java 文件添加必要的代碼

3

修改res/layout/activity_main.xml 添加相應的XML組件

4

修改 res/values/string. xml添加必要的字符串組成部分

5

運行應用程序並選擇運行Android的設備,並在其上安裝的應用和驗證結果

以下是修改後的主活動文件的內容src/com.yiibai.clipboard/MainActivity.java.

package com.example.clipboard; import android.annotation.SuppressLint; import android.app.Activity; import android.content.ClipData; import android.content.ClipboardManager; import android.os.Bundle; import android.view.Menu; import android.view.View; import android.widget.EditText; import android.widget.Toast; public class MainActivity extends Activity { private ClipboardManager myClipboard; private ClipData myClip; private EditText copyField,pasteField; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); myClipboard = (ClipboardManager)getSystemService(CLIPBOARD_SERVICE); copyField = (EditText)findViewById(R.id.editText1); pasteField = (EditText)findViewById(R.id.editText2); } @SuppressLint("NewApi") public void copy(View view){ String text = copyField.getText().toString(); myClip = ClipData.newPlainText("text", text); myClipboard.setPrimaryClip(myClip); Toast.makeText(getApplicationContext(), "Text Copied", Toast.LENGTH_SHORT).show(); } @SuppressLint("NewApi") public void paste(View view){ ClipData abc = myClipboard.getPrimaryClip(); ClipData.Item item = abc.getItemAt(0); String text = item.getText().toString(); pasteField.setText(text); Toast.makeText(getApplicationContext(), "Text Pasted", Toast.LENGTH_SHORT).show(); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } }

以下是經修改res/layout/activity_main.xml 的內容

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity" > <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:layout_marginLeft="25dp" android:layout_marginTop="19dp" android:text="@string/copytext" android:textAppearance="?android:attr/textAppearanceLarge" /> <EditText android:id="@+id/editText1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/textView1" android:layout_below="@+id/textView1" android:layout_marginTop="20dp" android:ems="10" > <TextView android:id="@+id/textView2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/editText1" android:layout_centerVertical="true" android:text="@string/pastetext" android:textAppearance="?android:attr/textAppearanceLarge" /> <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/editText1" android:layout_below="@+id/editText1" android:layout_marginLeft="65dp" android:layout_marginTop="20dp" android:onClick="copy" android:text="@string/copy" /> <EditText android:id="@+id/editText2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/textView2" android:layout_below="@+id/textView2" android:layout_marginTop="39dp" android:ems="10" /> <Button android:id="@+id/button2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/button1" android:layout_below="@+id/editText2" android:layout_marginTop="34dp" android:onClick="paste" android:text="@string/paste" />

以下是 res/values/string.xml 的內容

<string name="app_name">Clipboard <string name="action_settings">Settings <string name="hello_world">Hello world! <string name="copy">Copy Text <string name="paste">Paste Text <string name="copytext">Text to copy <string name="pastetext">Copied Text

以下是 AndroidManifest.xml 文件的內容:

<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.yiibai.clipboard" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="17" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name="com.yiibai.clipboard.MainActivity" android:label="@string/app_name" > <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" />

讓我們試着來運行修改剪貼板應用程序。安裝AVD並啓動程序,如果一切設置和應用程序都沒有問題,它會顯示以下仿真器窗口:

Anroid

現在只是在文本輸入任何文字複製字段,然後選擇複製文本按鈕。下面的通知將顯示其顯示如下:

Android

現在,只要按下按鈕,粘貼,會看到它被複制,現在粘貼複製的文本的字段中的文本。它如下所示:

Android

以上代碼下載: http://pan.baidu.com/s/1kTiiZVh