`

使用ClipboardManager剪贴板实现复制粘贴功能

 
阅读更多
经常要使用复制粘贴的功能,比如长安一个TextView弹出一个Pop,Pop中有一个选项“复制文本”,点击这个选项就把内容复制到了剪贴板上。

注意SDK11之前请使用android.text.ClipboardManager ,
SDK11起android.text.ClipboardManager被废弃,使用它的子类android.content.ClipboardManager替代,同样被废弃还有setText/getText/hasText方法,使用setPrimaryClip/getPrimaryClip/hasPrimaryClip替代

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;
   }

}

布局:
<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" >

      <requestFocus />
   </EditText>

   <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" />

</RelativeLayout>


http://chenfeicqq.iteye.com/blog/1888406
分享到:
评论

相关推荐

    Android开发之ClipboardManager剪贴板功能示例

    Android SDK提供了一个名为`ClipboardManager`的系统服务,使得开发者能够方便地实现复制和粘贴的操作。以下是对`ClipboardManager`的详细解释和使用示例。 **1. 获取`ClipboardManager`服务** 在Android中,`...

    Android 复制粘贴功能示例

    本文将深入探讨如何在Android应用中实现这一功能,特别是在给定的“复制粘贴demo”中使用PopupWindow来实现复制按钮。 首先,我们需要理解Android的文本操作API。在Android中,复制和粘贴操作是通过`...

    局域网内Android与PC平台剪贴板同步功能的实现.pdf

    实现这一功能需要考虑多个方面,包括网络连接的稳定性、数据加密以确保安全、以及剪贴板内容的格式转换,因为Android和PC可能使用不同的数据格式。此外,还需要处理剪贴板同步的触发机制,如定时检查还是事件驱动,...

    android实现文本复制到剪切板功能(ClipboardManager)

    旧版的`ClipboardManager`只支持字符串类型的复制粘贴,而新版的`ClipboardManager`从API 11开始支持更丰富的数据类型,如`ClipData`。 以下是实现文本复制功能的代码: ```java public static void copy(String ...

    Android TextView 复制粘贴 仿QQ空间、浏览器功能

    实现TextView的复制粘贴功能,可以极大地提升用户体验。本文将详细探讨如何在Android中模仿QQ空间和浏览器的复制粘贴功能,使TextView具备类似的功能。 首先,我们需要理解Android的剪贴板机制。Android系统提供了`...

    Android复制粘贴

    首先,Android中的复制粘贴功能主要由两部分组成:UI组件(如EditText)提供的文本选择器和系统的剪贴板服务(ClipboardManager)。当用户在EditText等可编辑文本视图中长按时,系统会显示一个文本选择手柄,允许...

    Android 之剪贴板的使用1

    Android提供了完善的剪贴板框架,通过`ClipboardManager`、`ClipData`和`ClipData.Item`类来实现复制和粘贴操作。下面我们将详细探讨这些类和方法的使用。 首先,要使用剪贴板功能,我们需要获取`ClipboardManager`...

    剪切板复制粘贴小demo

    这个“剪切板复制粘贴小demo”是一个编程示例,用于演示如何在代码中实现类似操作系统的剪切板功能。下面我们将详细探讨剪切板操作的基本原理以及如何在编程中实现它们。 首先,我们要理解剪切、复制和粘贴的概念:...

    安卓键盘输入相关-android自定义键盘keyboardview字母数字同键盘含复制粘贴功能.rar

    本文将深入探讨如何实现一个Android自定义键盘,包括字母数字混合键盘及集成复制粘贴功能。 首先,我们需要了解Android的KeyboardView组件。KeyboardView是Android SDK提供的一种用于显示虚拟键盘的视图,它可以...

    Android剪贴板

    在Android中,我们首先需要获取`ClipboardManager`实例,通常在需要使用剪贴板功能的地方进行初始化: ```java ClipboardManager clipboard = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE); ``...

    Android复制文本内容到系统剪贴板.rar

    通过学习和理解这些知识点,你可以轻松地在Android应用中实现复制文本到系统剪贴板的功能。如果你需要更详细的代码示例或遇到具体问题,可以进一步研究提供的压缩包文件,或者查阅Android官方文档和相关开发者资源。

    点击文本实现复制、粘贴

    在Android开发中,提供用户友好的交互体验是至关重要的,其中点击文本实现复制和粘贴功能就是一项...在实际应用中,还可以根据需求进行定制,例如添加多选、剪切等功能,或者使用第三方库来增强复制粘贴的交互效果。

    复制和粘贴

    - 当用户点击“复制”按钮时,我们需要获取TextView中的选中文本,并使用ClipboardManager的`setPrimaryClip()`方法将文本保存到剪贴板。 2. **粘贴操作**: - 在需要粘贴的EditText中,我们需要添加一个...

    Android--复制功能的实现.rar

    总结起来,Android平台上的复制功能实现主要包括以下几个步骤: 1. 监听文本选择事件。 2. 使用`ClipboardManager`将选中的文本设置为剪贴板的主要内容。 3. 实现粘贴功能,通过`ClipboardManager`获取剪贴板数据。 ...

    Android中复制及粘贴功能Demo

    接下来,粘贴功能的实现涉及到监听剪贴板的变化,并在用户触发粘贴操作时读取剪贴板的数据: 1. 添加`ClipboardManager.OnPrimaryClipChangedListener`:监听剪贴板内容变化。 ```java clipboard....

    Android自定义键盘,数字字母键盘,含复制粘贴功能

    步骤三:复制粘贴功能实现 复制粘贴功能在自定义键盘上实现相对复杂,通常需要借助`ClipboardManager`类。当用户触发复制或粘贴操作时,获取或设置剪贴板内容。 ```java ClipboardManager clipboard = ...

    android 复制 粘贴 剪切功能应用

    在一些旧的Android版本或特定场景下,可能会使用其他方式来模拟复制粘贴和剪切操作。如上述代码中提到的两种方法: 1. **模拟按键事件**: 通过创建和分发一个`KeyEvent`来模拟Shift键被按下的情况,这可能在某些...

    分别使用vue和Android实现长按券码复制功能

    使用copyToClipboard函数来复制指定的文本到剪贴板,并处理复制成功和失败的反馈。 4. 定义CSS样式:为了实现长按提示弹出效果,需要编写相应的CSS样式,以实现弹出提示的定位和显示。 5. 挂载指令和样式:在Vue...

    ClipboardManager

    2. **剪贴板接口**:可能有一个名为`Clipboard`的结构体或trait,用于处理复制、粘贴和清除剪贴板内容的操作。 3. **平台兼容性**:Rust的`std::os`模块可以帮助实现跨平台支持,确保ClipboardManager能在Windows、...

    Android长按复制文本

    这些功能主要涉及到Android的触摸事件处理、剪贴板服务(ClipboardManager)以及自定义视图(View)的实现。下面我们将详细探讨这些知识点。 1. 触摸事件处理: 在Android中,触摸事件通过MotionEvent类进行处理。...

Global site tag (gtag.js) - Google Analytics