Android中复制及粘贴功能

来源:互联网 发布:淘宝红包套现被处罚 编辑:程序博客网 时间:2024/05/17 04:14

我们开发中,经常会用到复制粘贴的功能。算是一个小功能,也比较简单。我把项目里用的,抽离出来,附带上自定义了一个简单的菜单弹窗。

来一张gif效果图:
这里写图片描述

直接上代码,文前后有Demo

正文类:

列表内容

/** * Created by zhenqi */public class MainActivity extends AppCompatActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        final TextView textView = (TextView) findViewById(R.id.textView);        final TextView textView2 = (TextView) findViewById(R.id.textView2);        EditText editText = (EditText) findViewById(R.id.editText);        //第一个文字的长按监听        textView.setOnLongClickListener(new View.OnLongClickListener() {            @Override            public boolean onLongClick(View view) {                showMenu(textView);                return true;            }        });        //第二个文字的长按监听        textView2.setOnLongClickListener(new View.OnLongClickListener() {            @Override            public boolean onLongClick(View view) {                showMenu(textView2);                return true;            }        });    }    public void showMenu(final TextView textView) {        //可以按照需求随意添加 中心显示的Dialog        CenterMenuDialog centerMenuDialog = new CenterMenuDialog(MainActivity.this);        //第一个选择条目        Menu copyMenu = new Menu.Builder().setCaption("复制").setMenuCommand(new MenuCommand() {            @Override            public void onClick() {                ClipboardManager myClipboard;                myClipboard = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE);                myClipboard.setPrimaryClip(ClipData.newPlainText("content", textView.getText()));                Toast.makeText(MainActivity.this, "内容已经复制", Toast.LENGTH_SHORT).show();            }        }).build();        centerMenuDialog.addMenu(copyMenu);        //第二个选择条目        Menu themeMenu = new Menu.Builder().setCaption("取消").setMenuCommand(new MenuCommand() {            @Override            public void onClick() {                Toast.makeText(MainActivity.this, "已经取消", Toast.LENGTH_SHORT).show();            }        }).build();        centerMenuDialog.addMenu(themeMenu);        //显示Dialog        centerMenuDialog.show();    }}

弹窗类:

/** * Created by zhenqi * 中心弹窗类 */public class CenterMenuDialog {    AlertDialog.Builder builder;    List<Menu> menuList=new ArrayList<>();    public void addMenu(Menu menu) {        menuList.add(menu);    }    public CenterMenuDialog(Context context){        builder = new AlertDialog.Builder(context);        builder.setCancelable(true);    }    public void show(){        String arr[]=new String[menuList.size()];        for (int i = 0; i < menuList.size(); i++) {            arr[i]=menuList.get(i).caption;        }        builder.setItems(arr, new DialogInterface.OnClickListener() {            @Override            public void onClick(DialogInterface dialogInterface, int i) {                Menu menu=menuList.get(i);                if(menu.menuCommand!=null){                    menu.menuCommand.onClick();                }            }        });        builder.create().show();    }}

菜单类:

/** * Created by zhenqi * 自定义菜单类 */public class Menu {    public int resourceId;    public String caption;    public MenuCommand menuCommand;    public static class Builder {        int resourceId;        String caption;        MenuCommand menuCommand;        public Builder setResourceId(int resourceId){            this.resourceId=resourceId;            return this;        }        public Builder setCaption(String caption){            this.caption=caption;            return this;        }        public Builder setMenuCommand(MenuCommand menuCommand){            this.menuCommand=menuCommand;            return this;        }        public Menu build(){            Menu menu=new Menu();            menu.resourceId=resourceId;            menu.menuCommand=menuCommand;            menu.caption=caption;            return menu;        }    }}

接口

/** * Created by zhenqi */public interface MenuCommand {    void onClick();}

→Demo地址,点击下载←