第二例:Clipboard剪贴板

来源:互联网 发布:网络种地实例 编辑:程序博客网 时间:2024/06/07 06:29
剪贴板:主程序
package demo.my.com.myapidemo.content;import android.app.Activity;import android.content.ClipData;import android.content.ClipboardManager;import android.content.Intent;import android.net.Uri;import android.os.Bundle;import android.text.method.LinkMovementMethod;import android.view.View;import android.widget.AdapterView;import android.widget.ArrayAdapter;import android.widget.Spinner;import android.widget.TextView;import demo.my.com.myapidemo.R;/** * Created by Hack on 2015/10/10. */public class ClipboardSample extends Activity {    ClipboardManager mClipboard;    Spinner mSpinner;    TextView mMimeTypes;    TextView mDataText;    CharSequence mStyledText;    String mPlainText;    String mHtmlText;    String mHtmlPlainText;    ClipboardManager.OnPrimaryClipChangedListener mPrimaryChangeListener            = new ClipboardManager.OnPrimaryClipChangedListener() {        public void onPrimaryClipChanged() {            updateClipData(true);        }    };    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        mClipboard = (ClipboardManager)getSystemService(CLIPBOARD_SERVICE);        setContentView(R.layout.clipboard);        TextView tv;        mStyledText = getText(R.string.styled_text);        tv = (TextView)findViewById(R.id.styled_text);        tv.setText(mStyledText);        mPlainText = mStyledText.toString();        tv = (TextView)findViewById(R.id.plain_text);        tv.setText(mPlainText);        mSpinner = (Spinner) findViewById(R.id.clip_type);        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);        mSpinner.setOnItemSelectedListener(                new AdapterView.OnItemSelectedListener() {                    public void onItemSelected(                            AdapterView<?> parent, View view, int position, long id) {                        updateClipData(false);                    }                    public void onNothingSelected(AdapterView<?> parent) {                    }                });        mMimeTypes = (TextView)findViewById(R.id.clip_mime_types);        mDataText = (TextView)findViewById(R.id.clip_text);        mClipboard.addPrimaryClipChangedListener(mPrimaryChangeListener);        updateClipData(true);    }    @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 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");        }        if (updateType) {            if (clip != null) {                ClipData.Item item = clip.getItemAt(0);                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:                    mDataText.setText(item.getIntent().toUri(0));                    break;                case 4:                    mDataText.setText(item.getUri().toString());                    break;                case 5:                    mDataText.setText(item.coerceToText(this));                    break;                case 6:                    mDataText.setText(item.coerceToStyledText(this));                    break;                case 7:                    mDataText.setText(item.coerceToHtmlText(this));                    break;                default:                    mDataText.setText("Unknown option: " + mSpinner.getSelectedItemPosition());                    break;            }        } else {            mDataText.setText("(NULL clip)");        }        mDataText.setMovementMethod(LinkMovementMethod.getInstance());    }}


xml文件

<?xml version="1.0" encoding="utf-8"?><!-- Copyright (C) 2007 The Android Open Source Project     Licensed under the Apache License, Version 2.0 (the "License");     you may not use this file except in compliance with the License.     You may obtain a copy of the License at          http://www.apache.org/licenses/LICENSE-2.0     Unless required by applicable law or agreed to in writing, software     distributed under the License is distributed on an "AS IS" BASIS,     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.     See the License for the specific language governing permissions and     limitations under the License.--><!--    Demonstrates clipboard.    See corresponding Java code:    com.example.android.apis.content.ClipboardSample--><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_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:textAppearance="?android:attr/textAppearanceMedium"                android:text="Data type: " />            <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>

资源文件strings.xml:

 <string name="activity_clipboard">Content/Clipboard/Data Types</string>    <string name="copy_text">Copy Text</string>    <string name="copy_intent">Copy Intent</string>    <string name="copy_uri">Copy URI</string>    <string name="clip_type_prompt">Clip Type</string>

arrays.xml

    <!-- Used in content/ClipboardSample.java -->    <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>



0 0
原创粉丝点击