安卓官方API DEMO之剪贴板Clipboard
来源:互联网 发布:officescan是什么软件 编辑:程序博客网 时间:2024/05/21 08:52
/** * Android系统剪贴板功能DEMO * * @description: * @author ldm * @date 2016-5-16 下午3:15:47 */public class ClipboardSample extends Activity { // 系统剪贴板管理器 ClipboardManager mClipboard; // 下拉列表 Spinner mSpinner; TextView mMimeTypes; TextView mDataText; CharSequence mStyledText; String mPlainText; String mHtmlText; String mHtmlPlainText; TextView tv; // 剪切板内容变化的监听器 ClipboardManager.OnPrimaryClipChangedListener mPrimaryChangeListener = new ClipboardManager.OnPrimaryClipChangedListener() { public void onPrimaryClipChanged() { updateClipData(true); } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.clipboard); // 系统剪贴板管理器 mClipboard = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE); mStyledText = getText(R.string.styled_text); // 初始化界面UI initViews(); // 设置数据及控件监听 initDataAndEvents(); } private void initDataAndEvents() { // <string-array name="clip_data_types"> // <item>No data in clipboard</item> // <item>Text clip</item> // <item>HTML Text clip</item> // <item>Intent clip</item> // <item>Uri clip</item> // <item>Coerce to text</item> // <item>Coerce to styled text</item> // <item>Coerce to HTML text</item> // </string-array> ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource( this, R.array.clip_data_types, android.R.layout.simple_spinner_item); adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); mSpinner.setAdapter(adapter); // Spinner下拉框Item点击事件处理 mSpinner.setOnItemSelectedListener(new OnItemSelectedListener() { public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { updateClipData(false); } public void onNothingSelected(AdapterView<?> parent) { } }); mClipboard.addPrimaryClipChangedListener(mPrimaryChangeListener); updateClipData(true); } private void initViews() { tv = (TextView) findViewById(R.id.styled_text); tv.setText(mStyledText); mPlainText = mStyledText.toString(); tv = (TextView) findViewById(R.id.plain_text); tv.setText(mPlainText); mHtmlText = "<b>Link:</b> <a href=\"http://www.android.com\">Android</a>"; mHtmlPlainText = "Link: http://www.android.com"; tv = (TextView) findViewById(R.id.html_text); tv.setText(mHtmlText); mSpinner = (Spinner) findViewById(R.id.clip_type); mMimeTypes = (TextView) findViewById(R.id.clip_mime_types); mDataText = (TextView) findViewById(R.id.clip_text); } @Override protected void onDestroy() { super.onDestroy(); mClipboard.removePrimaryClipChangedListener(mPrimaryChangeListener); } public void pasteStyledText(View button) { mClipboard.setPrimaryClip(ClipData.newPlainText("Styled Text", mStyledText)); } public void pastePlainText(View button) { mClipboard.setPrimaryClip(ClipData.newPlainText("Styled Text", mPlainText)); } public void pasteHtmlText(View button) { mClipboard.setPrimaryClip(ClipData.newHtmlText("HTML Text", mHtmlPlainText, mHtmlText)); } public void pasteIntent(View button) { Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.android.com/")); mClipboard.setPrimaryClip(ClipData.newIntent("VIEW intent", intent)); } public void pasteUri(View button) { mClipboard.setPrimaryClip(ClipData.newRawUri("URI", Uri.parse("http://www.android.com/"))); } /** * 更新剪贴板操作 * */ void updateClipData(boolean updateType) { // 获取剪切板的ClipData数据对象 ClipData clip = mClipboard.getPrimaryClip(); // 获取到数据的类型 String[] mimeTypes = clip != null ? clip.getDescription() .filterMimeTypes("*/*") : null; if (mimeTypes != null) { mMimeTypes.setText(""); for (int i = 0; i < mimeTypes.length; i++) { if (i > 0) { mMimeTypes.append("\n"); } mMimeTypes.append(mimeTypes[i]); } } else { mMimeTypes.setText("NULL"); } // 根据类型来确定Spinner显示的文字 if (updateType) { if (clip != null) { ClipData.Item item = clip.getItemAt(0); if (item.getHtmlText() != null) { mSpinner.setSelection(2); } else if (item.getText() != null) { mSpinner.setSelection(1); } else if (item.getIntent() != null) { mSpinner.setSelection(3); } else if (item.getUri() != null) { mSpinner.setSelection(4); } else { mSpinner.setSelection(0); } } else { mSpinner.setSelection(0); } } if (clip != null) { // 获取剪贴板中的数据 ClipData.Item item = clip.getItemAt(0); switch (mSpinner.getSelectedItemPosition()) { case 0: mDataText.setText("(No data)"); break; case 1: mDataText.setText(item.getText()); break; case 2: mDataText.setText(item.getHtmlText()); break; case 3: // 因没有intent类型数据,会报null mDataText.setText(item.getIntent().toUri(0)); break; case 4: // 因没有Uri类型数据,会报null mDataText.setText(item.getUri().toString()); break; case 5: // 剪贴板中的非text数据可以通过ClipData.Item.coerceToText()方法转换为text处理。 mDataText.setText(item.coerceToText(this)); break; case 6: mDataText.setText(item.coerceToStyledText(this)); break; case 7: // 转换为Hteml格式 mDataText.setText(item.coerceToHtmlText(this)); break; default: mDataText.setText("Unknown option: " + mSpinner.getSelectedItemPosition()); break; } } else { mDataText.setText("(NULL clip)"); } // 设置文字监听 mDataText.setMovementMethod(LinkMovementMethod.getInstance()); }}
布局文件:
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" > <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" > <Button android:id="@+id/copy_styled_text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="pasteStyledText" android:text="@string/copy_text" /> <TextView android:id="@+id/styled_text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textStyle="normal" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" > <Button android:id="@+id/copy_plain_text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="pastePlainText" android:text="@string/copy_text" /> <TextView android:id="@+id/plain_text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textStyle="normal" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" > <Button android:id="@+id/copy_html_text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="pasteHtmlText" android:text="@string/copy_text" /> <TextView android:id="@+id/html_text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textStyle="normal" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" > <Button android:id="@+id/copy_intent" android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="pasteIntent" android:text="@string/copy_intent" /> <Button android:id="@+id/copy_uri" android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="pasteUri" android:text="@string/copy_uri" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="8dp" android:orientation="horizontal" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Data type: " android:textAppearance="?android:attr/textAppearanceMedium" /> <Spinner android:id="@+id/clip_type" android:layout_width="wrap_content" android:layout_height="wrap_content" android:drawSelectorOnTop="true" android:prompt="@string/clip_type_prompt" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="4dp" android:orientation="horizontal" ><TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceMedium" android:text="MIME types: " /> <TextView android:id="@+id/clip_mime_types" android:layout_width="0dp" android:layout_weight="1" android:layout_height="wrap_content" android:background="#ff303030" android:padding="4dp" android:textAppearance="?android:attr/textAppearanceMedium" /> </LinearLayout> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="4dp" android:textAppearance="?android:attr/textAppearanceMedium" android:text="Data content:" /> <TextView android:id="@+id/clip_text" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="#ff303030" android:padding="4dp" android:textAppearance="?android:attr/textAppearanceMedium" /> </LinearLayout></ScrollView>
开源代码:https://github.com/ldm520/ANDROID_API_DEMOS
0 0
- 安卓官方API DEMO之剪贴板Clipboard
- 剪贴板(Clipboard)
- 进程间通信之剪贴板clipboard
- android clipboard 剪贴板 新方法
- 第二例:Clipboard剪贴板
- win10 UWP 剪贴板 Clipboard
- Android Clipboard(复制/剪贴板)
- Android Clipboard(复制/剪贴板)
- Android Clipboard(复制/剪贴板)
- Android Clipboard(复制/剪贴板)
- java AWT 剪贴板Clipboard
- Android官方API Demo学习之联系人获取
- cocos2dx 3.1.1官方demo阅读-在安卓平台运行cpp-tests 官方Demo
- C++ builder 剪贴板Clipboard使用
- VC++中使用剪贴板clipboard
- Zero Clipboard复制到剪贴板
- clipboard.js 复制到剪贴板
- 安卓剪贴板服务ClipboardManager
- nrf51822 keil地址设置
- 游戏服务器框架设计
- 132.LRU Cache
- DatePickerDialog的使用
- Loadrunner运行QTP脚本
- 安卓官方API DEMO之剪贴板Clipboard
- 图片缓存(缓存Bitmap)
- ACE框架整合记录2Tab插件-【完结】
- 自己动手实现SpringIoC
- loadrunner录制脚本出现Grooveutil
- Unity 函数图
- 一起来搞定 ds1302
- 多个UIViewController使用addSubView,第二个 UIViewController 不响应旋转[转]
- 动态规划1之1010