آموزش کلیپبورد در اندروید
آموزش کلیپبورد اندروید
اندروید چارچوب کلیپبورد را برای کپی و پیست کردن انواع مختلف داده ارائه می دهد. داده می تواند متن، تصویر، داده های دوتایی و یا انواع داده های پیچیده ی دیگر باشد.
اندروید کتابخانه ی ClipboardManager و ClipData و ClipData.itemرا برای استفاده از چارچوب کپی و پیست کردن ارائه می دهد. برای استفاده از این شئ لازم است داده را در یک clip object قرار داده و سپس آن داده را در سیستم کلیپبورد اصلی قرار دهید.
برای استفاده از کلیپبورد نیاز است که یک شئ از ClipboardManager را با فراخوانی getSystemService()ایجاد کنید. ترکیب آن در زیر ارائه شده است:
ClipboardManager myClipboard;
myClipboard = (ClipboardManager)getSystemService(CLIPBOARD_SERVICE);
کپی کردن داده
کار بعدی که لازم است انجام دهید آوردن نمونه ی آبجکت ClipData با فراخوانی نوع مربوط به روش داده از گروه ClipData می باشد. در مورد داده ی متن روش newPlainText فراخوانده خواهد شد. پس از آن باید داده را به عنوان قطعه ای از شئ Clipbaoard Manager قرار دهید. به صورت زیر:
ClipData myClip;
String text = "hello world";
myClip = ClipData.newPlainText("text", text);
myClipboard.setPrimaryClip(myClip);
شئ ClipData می تواند این سه شکل را به خود بگیرد و عملکردهای زیر برای ایجاد این شکل ها استفاده می شوند.
-
Text
یک آبجکت ClipData را که تنها ClipData می باشد، بازمی گرداند. آبجکت آیتم دارای یک رشته متن می باشد.
newPlainText(label, text) -
URI
یک آبجکت ClipData را که تنها ClipData می باشد، بازمی گرداند. آبجکت آیتم دارای یک URI می باشد
newUri(resolver, label, URI) -
Intent
یک آبجکت ClipData را که تنها ClipData می باشد، بازمی گرداند. آبجکت آیتم دارای یکIntent می باشد
newIntent(label, intent)
پیست کردن داده (Pasting Data)
برای پیست کردن داده، ابتدا باید با فراخوانی getPrimaryClip() وارد clip شویم و از آن, آیتم را در ClipData شئ Item خواهیم گرفت. پس از آن شئ داده را به دست خواهیم آورد.به ترتیب زیر.
ClipData abc = myClipboard.getPrimaryClip();
ClipData.Item item = abc.getItemAt(0);
String text = item.getText().toString();
علاوه براین روش ها، روش های دیگری وجود دارند که توسط گروه ClipboardManagerبرای مدیریت چارچوب کلیپبورد ارائه می شوند. این روش ها در زیر ارائه شده اند.
-
getPrimaryClip()
این روش قطعه ی اولیه ی موجود را روی کلیپبورد باز می گزداند. -
hasPrimaryClip()
اگر روی کلیپبورد کلیپ اولیه وجود داشته باشد، این روش درست را بازمی گرداند. -
setPrimaryClip(ClipData clip)
این روش کلیپ اولیه را روی کلیپ بورد تنظیم می کند. -
setText(CharSequence text)
این روش می تواند مستقیما برای کپی متن روی کلیپ بورد استفاده شود. -
getText()
این روش می تواند مستقیما برای گرفتن متن کپی شده از کلیپ بورد استفاده شود.
مثال
در اینجا مثالی را می بینید که استفاده ی ClipboardManager را توضیح می دهد. این مثال یک برنامه ی کپی پیست پایه ایجاد می کند که به شما اجازه می دهد تا متن را کپی کرده و سپس از طریق کلیپبورد آن را پیست کنید.برای آزمایش با این مثال می توانید آن را روی یک دستگاه واقعی یا یک مقلد اجرا کنید.
- برای ایجاد یک برنامه ی اندروید از Eclipse IDE استفاده خواهید کرد و آن را با عنوان Clipboard تحت بسته ی com.example.clipboard نام گذاری کنید. زمان ایجاد این برنامه مطمئن شوید که Target SDK و Compile With در آخرین ورژن Android SDK هستند تا از سطوح بالاتر API استفاده کنید.
- فایل src/MainActivity.java را برای افزودن کد لازم تغییر دهید.
- res/layout/activity_main را برای افزودن مولفه های XML مربوطه تغییر دهید.
- res/values/string.xml را تغییر دهید تا مولفه های رشته ی مورد نیاز را به آن اضافه کنید.
- برنامه را اجرا کرده و یک دستگاه اجرایی اندروید انتخاب کنید و برنامه را روی آن نصب کرده و نتیجه را بررسی کنید.
در زیر محتوای فایل تغییریافته ی فعالیت اصلی را مشاهده می کنید.
package com.example.sairamkrishna.myapplication;
import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothDevice;
import android.content.ClipData;
import android.content.ClipboardManager;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.BatteryManager;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import java.util.ArrayList;
import java.util.Set;
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();
}
});
}
@Override
protected void onDestroy() {
super.onDestroy();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
در زیر محتوای xml تغییر یافته ی 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: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>
در زیر محتوای res/values/string.xmlمی باشد
<resources>
<string name="app_name">My Application</string>
<string name="hello_world">Hello world!</string>
<string name="action_settings">Settings</string>
</resources>
در زیر محتوای فایل AndroidManifest.xmlمی باشد
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.clipboard"
android:versionCode="1"
android:versionName="1.0" >
<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>
اجازه بدهید برنامه ی Clipboardشما را اجرا کنیم. فرض می کنیم که شما AVD خود را در هنگام انجام تنظیمات محیط ایجاد کرده اید. برای اجرای برنامه از Eclipse، یکی ازفایل های فعالیت پروژه را باز کرده و روی آیکن Run از تولبار کلیک کنید.
حال متنی در قسمت Text to copy وارد کنید و سپس copy text را انتخاب کنید که متن زیر نمایش داده خواهد شد.
اکنون دکمه ی paste را انتخاب کنید. خواهید دید که متن کپی شده در فیلد Copied text پیست می شود که در زیر نمایش داده شده است
- نوشته شده توسط سعید نوشادی
- بازدید: 6891