Android - Bảng tạm
Android cung cấp khung clipboard để sao chép và dán các loại dữ liệu khác nhau. Dữ liệu có thể là văn bản, hình ảnh, dữ liệu dòng nhị phân hoặc các kiểu dữ liệu phức tạp khác.
Android cung cấp thư viện ClipboardManager và ClipData và ClipData.item để sử dụng khuôn khổ sao chép và dán. Để sử dụng khuôn khổ clipboard, bạn cần đưa dữ liệu vào đối tượng clip, sau đó đưa đối tượng đó vào khay nhớ tạm trên toàn hệ thống.
Để sử dụng clipboard, bạn cần khởi tạo một đối tượng của ClipboardManager bằng cách gọi getSystemService()phương pháp. Cú pháp của nó được đưa ra dưới đây:
ClipboardManager myClipboard;
myClipboard = (ClipboardManager)getSystemService(CLIPBOARD_SERVICE);
Sao chép dữ liệu
Điều tiếp theo bạn cần làm là khởi tạo đối tượng ClipData bằng cách gọi kiểu phương thức dữ liệu tương ứng của lớp ClipData. Trong trường hợp dữ liệu văn bản,newPlainTextphương thức sẽ được gọi. Sau đó, bạn phải đặt dữ liệu đó làm clip của đối tượng Clipboard Manager. Cú pháp của nó như sau:
ClipData myClip;
String text = "hello world";
myClip = ClipData.newPlainText("text", text);
myClipboard.setPrimaryClip(myClip);
Đối tượng ClipData có thể có ba dạng này và các hàm sau được sử dụng để tạo các dạng đó.
Sr.No | ClipData Form & Method |
---|---|
1 |
Text newPlainText (nhãn, văn bản) Trả về một đối tượng ClipData có đối tượng ClipData.Item đơn chứa một chuỗi văn bản. |
2 |
URI newUri (trình phân giải, nhãn, URI) Trả về một đối tượng ClipData có một đối tượng ClipData.Item chứa một URI. |
3 |
Intent newIntent (nhãn, ý định) Trả về một đối tượng ClipData có một đối tượng ClipData.Item chứa một Intent. |
Dán dữ liệu
Để dán dữ liệu, trước tiên chúng ta sẽ lấy clip bằng cách gọi getPrimaryClip()phương pháp. Và từ cú nhấp chuột đó, chúng ta sẽ nhận được mục trong đối tượng ClipData.Item. Và từ đối tượng, chúng ta sẽ nhận được dữ liệu. Cú pháp của nó được đưa ra dưới đây:
ClipData abc = myClipboard.getPrimaryClip();
ClipData.Item item = abc.getItemAt(0);
String text = item.getText().toString();
Ngoài các phương pháp này, còn có các phương thức khác được cung cấp bởi lớp ClipboardManager để quản lý khung clipboard. Các phương pháp này được liệt kê bên dưới -
Sr.No | Phương pháp & mô tả |
---|---|
1 |
getPrimaryClip() Phương thức này chỉ trả về clip chính hiện tại trên khay nhớ tạm |
2 |
getPrimaryClipDescription() Phương thức này trả về mô tả của clip chính hiện tại trên khay nhớ tạm nhưng không phải là bản sao dữ liệu của nó. |
3 |
hasPrimaryClip() Phương thức này trả về true nếu hiện có một clip chính trên khay nhớ tạm |
4 |
setPrimaryClip(ClipData clip) Phương pháp này đặt clip chính hiện tại trên khay nhớ tạm |
5 |
setText(CharSequence text) Phương pháp này có thể được sử dụng trực tiếp để sao chép văn bản vào khay nhớ tạm |
6 |
getText() Phương pháp này có thể được sử dụng trực tiếp để lấy văn bản đã sao chép từ khay nhớ tạm |
Thí dụ
Đây là một ví dụ minh họa việc sử dụng lớp ClipboardManager. Nó tạo ra một ứng dụng sao chép cơ bản cho phép bạn sao chép văn bản và sau đó dán nó qua khay nhớ tạm.
Để thử nghiệm với ví dụ này, bạn có thể chạy trên thiết bị thực tế hoặc trong trình giả lập.
Các bước | Sự miêu tả |
---|---|
1 | Bạn sẽ sử dụng Android studio IDE để tạo ứng dụng Android và theo gói com.example.sairamkrishna.myapplication. |
2 | Sửa đổi tệp src / MainActivity.java để thêm mã cần thiết. |
3 | Sửa đổi res / layout / activity_main để thêm các thành phần XML tương ứng |
4 | Chạy ứng dụng và chọn một thiết bị Android đang chạy và cài đặt ứng dụng trên đó và xác minh kết quả |
Sau đây là nội dung của tệp hoạt động chính được sửa đổi src/MainActivity.java.
package com.example.sairamkrishna.myapplication;
import android.content.ClipData;
import android.content.ClipboardManager;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class MainActivity extends ActionBarActivity {
EditText ed1, ed2;
Button b1, b2;
private ClipboardManager myClipboard;
private ClipData myClip;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ed1 = (EditText) findViewById(R.id.editText);
ed2 = (EditText) findViewById(R.id.editText2);
b1 = (Button) findViewById(R.id.button);
b2 = (Button) findViewById(R.id.button2);
myClipboard = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE);
b1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String text;
text = ed1.getText().toString();
myClip = ClipData.newPlainText("text", text);
myClipboard.setPrimaryClip(myClip);
Toast.makeText(getApplicationContext(), "Text Copied",
Toast.LENGTH_SHORT).show();
}
});
b2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ClipData abc = myClipboard.getPrimaryClip();
ClipData.Item item = abc.getItemAt(0);
String text = item.getText().toString();
ed2.setText(text);
Toast.makeText(getApplicationContext(), "Text Pasted",
Toast.LENGTH_SHORT).show();
}
});
}
}
Sau đây là nội dung sửa đổi của xml res/layout/activity_main.xml.
<?xml version="1.0" encoding="utf-8"?>
<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:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context=".MainActivity">
<TextView android:text="Example" android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/textview"
android:textSize="35dp"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Tutorials point"
android:id="@+id/textView"
android:layout_below="@+id/textview"
android:layout_centerHorizontal="true"
android:textColor="#ff7aff24"
android:textSize="35dp" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/imageView"
android:src="@drawable/abc"
android:layout_below="@+id/textView"
android:layout_centerHorizontal="true" />
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/editText"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:hint="Copy text"
android:layout_below="@+id/imageView"
android:layout_alignLeft="@+id/imageView"
android:layout_alignStart="@+id/imageView" />
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/editText2"
android:layout_alignLeft="@+id/editText"
android:layout_alignStart="@+id/editText"
android:hint="paste text"
android:layout_below="@+id/editText"
android:layout_alignRight="@+id/editText"
android:layout_alignEnd="@+id/editText" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Copy text"
android:id="@+id/button"
android:layout_below="@+id/editText2"
android:layout_alignLeft="@+id/editText2"
android:layout_alignStart="@+id/editText2" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Paste text"
android:id="@+id/button2"
android:layout_below="@+id/editText2"
android:layout_alignRight="@+id/editText2"
android:layout_alignEnd="@+id/editText2" />
</RelativeLayout>
Sau đây là nội dung của res/values/string.xml.
<resources>
<string name="app_name">My Application</string>
</resources>
Sau đây là nội dung của AndroidManifest.xml tập tin.
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.sairamkrishna.myapplication" >
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.example.sairamkrishna.myapplication.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
Hãy thử chạy một ứng dụng mà chúng tôi vừa sửa đổi. Tôi cho rằng bạn đã tạo raAVDtrong khi thiết lập môi trường. Để chạy ứng dụng từ Android studio, hãy mở một trong các tệp hoạt động của dự án của bạn và nhấp vào
Bây giờ chỉ cần nhập bất kỳ văn bản nào vào trường Văn bản để sao chép và sau đó chọn nút sao chép văn bản. Thông báo sau sẽ được hiển thị như hình dưới đây -
Bây giờ chỉ cần nhấn nút dán, và bạn sẽ thấy văn bản được sao chép hiện được dán vào trường Văn bản được sao chép. Nó được hiển thị bên dưới -