ApiDemo学习 ClipboardSample

这个例子阐述了Clipboard的使用,包括监听粘贴时间等,原理剪切板还可以剪切intent,哪里有用到呢?

但是注意这里的剪切板是4.0 以上的

 API 11之前: android.text.ClipboardManager 只能粘贴文本

public static void copyText(Context context, String text) {
    ClipboardManager cm = (ClipboardManager) context
            .getSystemService(Context.CLIPBOARD_SERVICE);
    cm.setText(text);
}

  1. public class ClipboardSample extends Activity {  
  2.     ClipboardManager mClipboard;  
  3.   
  4.     Spinner mSpinner;  
  5.     TextView mMimeTypes;  
  6.     EditText mEditText;  
  7.   
  8.     CharSequence mStyledText;  
  9.     String mPlainText;  
  10.   
  11.     ClipboardManager.OnPrimaryClipChangedListener mPrimaryChangeListener  
  12.             = new ClipboardManager.OnPrimaryClipChangedListener() {  
  13.         public void onPrimaryClipChanged() {  
  14.             updateClipData();  
  15.         }  
  16.     };  
  17.   
  18.     @Override  
  19.     protected void onCreate(Bundle savedInstanceState) {  
  20.         super.onCreate(savedInstanceState);  
  21.   
  22.         mClipboard = (ClipboardManager)getSystemService(CLIPBOARD_SERVICE);  
  23.   
  24.         // See res/any/layout/resources.xml for this view layout definition.  
  25.         setContentView(R.layout.clipboard);  
  26.   
  27.         TextView tv;  
  28.   
  29.         mStyledText = getText(R.string.styled_text);  
  30.         tv = (TextView)findViewById(R.id.styled_text);  
  31.         tv.setText(mStyledText);  
  32.   
  33.         mPlainText = mStyledText.toString();  
  34.         tv = (TextView)findViewById(R.id.plain_text);  
  35.         tv.setText(mPlainText);  
  36.   
  37.         mSpinner = (Spinner) findViewById(R.id.clip_type);  
  38.         ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(  
  39.                 this, R.array.clip_data_types, android.R.layout.simple_spinner_item);  
  40.         adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);  
  41.         mSpinner.setAdapter(adapter);  
  42.         mSpinner.setOnItemSelectedListener(  
  43.                 new OnItemSelectedListener() {  
  44.                     public void onItemSelected(  
  45.                             AdapterView<?> parent, View view, int position, long id) {  
  46.                     }  
  47.                     public void onNothingSelected(AdapterView<?> parent) {  
  48.                     }  
  49.                 });  
  50.   
  51.         mMimeTypes = (TextView)findViewById(R.id.clip_mime_types);  
  52.         mEditText = (EditText)findViewById(R.id.clip_text);  
  53.         //注册监听器监听剪切板的变化  
  54.         mClipboard.addPrimaryClipChangedListener(mPrimaryChangeListener);  
  55.         updateClipData();  
  56.     }  
  57.   
  58.     @Override  
  59.     protected void onDestroy() {  
  60.         super.onDestroy();  
  61.         mClipboard.removePrimaryClipChangedListener(mPrimaryChangeListener);  
  62.     }  
  63.     //有格式的文本  
  64.     public void pasteStyledText(View button) {  
  65.         mClipboard.setPrimaryClip(ClipData.newPlainText("Styled Text", mStyledText));  
  66.     }  
  67.     //纯文本  
  68.     public void pastePlainText(View button) {  
  69.         mClipboard.setPrimaryClip(ClipData.newPlainText("Styled Text", mPlainText));  
  70.     }  
  71.     //intent  
  72.     public void pasteIntent(View button) {  
  73.         Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.android.com/"));  
  74.         mClipboard.setPrimaryClip(ClipData.newIntent("VIEW intent", intent));  
  75.     }  
  76.     //uri  
  77.     public void pasteUri(View button) {  
  78.         mClipboard.setPrimaryClip(ClipData.newRawUri("URI", Uri.parse("http://www.android.com/")));  
  79.     }  
  80.   
  81.     void updateClipData() {  
  82.         ClipData clip = mClipboard.getPrimaryClip();  
  83.         String[] mimeTypes = clip != null ? clip.getDescription().filterMimeTypes("*/*") : null;  
  84.         mMimeTypes.setText("");  
  85.         if (mimeTypes != null) {  
  86.             for (int i=0; i<mimeTypes.length; i++) {  
  87.                 mMimeTypes.append(mimeTypes[i]);  
  88.                 mMimeTypes.append("\n");  
  89.             }  
  90.         }  
  91.         if (clip == null) {  
  92.             mSpinner.setSelection(0);  
  93.             mEditText.setText("");  
  94.         } else if (clip.getItemAt(0).getText() != null) {  
  95.             mSpinner.setSelection(1);  
  96.             mEditText.setText(clip.getItemAt(0).getText());  
  97.         } else if (clip.getItemAt(0).getIntent() != null) {  
  98.             mSpinner.setSelection(2);  
  99.             mEditText.setText(clip.getItemAt(0).getIntent().toUri(0));  
  100.         } else if (clip.getItemAt(0).getUri() != null) {  
  101.             mSpinner.setSelection(3);  
  102.             mEditText.setText(clip.getItemAt(0).getUri().toString());  
  103.         } else {  
  104.             mSpinner.setSelection(0);  
  105.             mEditText.setText("Clip containing no data");  
  106.         }  
  107.     }  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值