New API demo for clipboard.

Change-Id: Ifcf52b2f7bae10e77c074868414a57c2d8f67c3c
This commit is contained in:
Dianne Hackborn
2010-08-04 23:21:03 -07:00
parent b9461fc8ef
commit 46e70551eb
6 changed files with 247 additions and 6 deletions

View File

@@ -721,6 +721,13 @@
<!-- CONTENT PACKAGE SAMPLES -->
<!-- ************************************* -->
<activity android:name=".content.ClipboardSample" android:label="@string/activity_clipboard">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.SAMPLE_CODE" />
</intent-filter>
</activity>
<activity android:name=".content.ExternalStorage" android:label="@string/activity_external_storage">
<intent-filter>
<action android:name="android.intent.action.MAIN" />

View File

@@ -0,0 +1,99 @@
<?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
-->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
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:gravity="center_horizontal"
android:textStyle="normal" />
</LinearLayout>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
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:gravity="center_horizontal"
android:textStyle="normal" />
</LinearLayout>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
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>
<Spinner android:id="@+id/clip_type"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:drawSelectorOnTop="true"
android:prompt="@string/clip_type_prompt"
/>
<EditText
android:id="@+id/clip_text"
android:layout_width="match_parent"
android:layout_height="0px"
android:layout_weight="1"
android:textStyle="normal"
/>
</LinearLayout>

View File

@@ -38,6 +38,14 @@
<item>Pluto</item>
</string-array>
<!-- Used in content/ClipboardSample.java -->
<string-array name="clip_data_types">
<item>No data in clipboard</item>
<item>Text clip</item>
<item>Intent clip</item>
<item>Uri clip</item>
</string-array>
<!-- Used in App/SearchInvoke.java -->
<string-array name="search_menuModes">
<item>Search Key</item>

View File

@@ -266,6 +266,12 @@
<!-- app/content examples strings -->
<!-- ============================== -->
<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>
<string name="activity_external_storage">Content/Storage/External Storage</string>
<string name="create">Create</string>
<string name="delete">Delete</string>

View File

@@ -0,0 +1,123 @@
package com.example.android.apis.content;
import com.example.android.apis.R;
import android.app.Activity;
import android.content.ClipboardManager;
import android.content.ClippedData;
import android.content.Context;
import android.content.Intent;
import android.content.res.Resources;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.AdapterView.OnItemSelectedListener;
public class ClipboardSample extends Activity {
ClipboardManager mClipboard;
Spinner mSpinner;
EditText mEditText;
CharSequence mStyledText;
String mPlainText;
ClipboardManager.OnPrimaryClipChangedListener mPrimaryChangeListener
= new ClipboardManager.OnPrimaryClipChangedListener() {
@Override
public void onPrimaryClipChanged() {
updateClipData();
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mClipboard = (ClipboardManager)getSystemService(CLIPBOARD_SERVICE);
// See res/any/layout/resources.xml for this view layout definition.
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 OnItemSelectedListener() {
public void onItemSelected(
AdapterView<?> parent, View view, int position, long id) {
}
public void onNothingSelected(AdapterView<?> parent) {
}
});
mEditText = (EditText)findViewById(R.id.clip_text);
mClipboard.addPrimaryClipChangedListener(mPrimaryChangeListener);
updateClipData();
}
@Override
protected void onDestroy() {
super.onDestroy();
mClipboard.removePrimaryClipChangedListener(mPrimaryChangeListener);
}
public void pasteStyledText(View button) {
mClipboard.setPrimaryClip(new ClippedData("Styled Text", null,
new ClippedData.Item(mStyledText)));
}
public void pastePlainText(View button) {
mClipboard.setPrimaryClip(new ClippedData("Plain Text", null,
new ClippedData.Item(mPlainText)));
}
public void pasteIntent(View button) {
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.android.com/"));
mClipboard.setPrimaryClip(new ClippedData("View intent", null,
new ClippedData.Item(intent)));
}
public void pasteUri(View button) {
mClipboard.setPrimaryClip(new ClippedData("View intent", null,
new ClippedData.Item(Uri.parse("http://www.android.com/"))));
}
void updateClipData() {
ClippedData clip = mClipboard.getPrimaryClip();
if (clip == null) {
mSpinner.setSelection(0);
mEditText.setText("");
} else if (clip.getItem(0).getText() != null) {
mSpinner.setSelection(1);
mEditText.setText(clip.getItem(0).getText());
} else if (clip.getItem(0).getIntent() != null) {
mSpinner.setSelection(2);
mEditText.setText(clip.getItem(0).getIntent().toUri(0));
} else if (clip.getItem(0).getUri() != null) {
mSpinner.setSelection(3);
mEditText.setText(clip.getItem(0).getUri().toString());
} else {
mSpinner.setSelection(0);
mEditText.setText("Clip containing no data");
}
}
}

View File

@@ -38,11 +38,9 @@ import android.widget.TextView;
* @see StyledText for more depth about using styled text, both with getString()
* and in the layout xml files.
*/
public class ResourcesSample extends Activity
{
public class ResourcesSample extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState)
{
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// See res/any/layout/resources.xml for this view layout definition.
@@ -54,8 +52,8 @@ public class ResourcesSample extends Activity
// ====== Using the Context.getString() convenience method ===========
// Using the getString() conevenience method, retrieve a string
// resource that hapepns to have style information. Note the use of
// Using the getString() convenience method, retrieve a string
// resource that happens to have style information. Note the use of
// CharSequence instead of String so we don't lose the style info.
cs = getText(R.string.styled_text);
tv = (TextView)findViewById(R.id.styled_text);