diff options
| author | Dianne Hackborn <hackbod@google.com> | 2012-04-13 16:12:01 -0700 |
|---|---|---|
| committer | Dianne Hackborn <hackbod@google.com> | 2012-04-13 16:12:01 -0700 |
| commit | 6c5e9eb6508685af882f6c41f7e343e6ca0f46cb (patch) | |
| tree | 5987ed86d288621f1ab99156caf14aac5af51ed8 /samples | |
| parent | 2af3f3067a55eaa81be0b90d4cbe0531920d48dc (diff) | |
| download | android_development-6c5e9eb6508685af882f6c41f7e343e6ca0f46cb.tar.gz android_development-6c5e9eb6508685af882f6c41f7e343e6ca0f46cb.tar.bz2 android_development-6c5e9eb6508685af882f6c41f7e343e6ca0f46cb.zip | |
Update API demo to show new clip data types and conversions.
Change-Id: I32e2951c53ecedc75d1459666ced9f54b54cf6ba
Diffstat (limited to 'samples')
| -rw-r--r-- | samples/ApiDemos/res/layout/clipboard.xml | 188 | ||||
| -rw-r--r-- | samples/ApiDemos/res/values/arrays.xml | 4 | ||||
| -rw-r--r-- | samples/ApiDemos/src/com/example/android/apis/content/ClipboardSample.java | 99 |
3 files changed, 204 insertions, 87 deletions
diff --git a/samples/ApiDemos/res/layout/clipboard.xml b/samples/ApiDemos/res/layout/clipboard.xml index 645b1ea65..8f844aa0b 100644 --- a/samples/ApiDemos/res/layout/clipboard.xml +++ b/samples/ApiDemos/res/layout/clipboard.xml @@ -21,87 +21,145 @@ com.example.android.apis.content.ClipboardSample --> -<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" +<ScrollView 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" + <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" - android:orientation="horizontal"> + android:orientation="vertical"> - <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" /> + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal"> - <TextView - android:id="@+id/styled_text" - android:layout_width="wrap_content" + <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:gravity="center_horizontal" - android:textStyle="normal" /> + android:orientation="horizontal"> - </LinearLayout> + <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" /> - <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:orientation="horizontal"> + <TextView + android:id="@+id/plain_text" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:textStyle="normal" /> - <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" /> + </LinearLayout> - <TextView - android:id="@+id/plain_text" - android:layout_width="wrap_content" + <LinearLayout + android:layout_width="match_parent" android:layout_height="wrap_content" - android:gravity="center_horizontal" - android:textStyle="normal" /> + android:orientation="horizontal"> - </LinearLayout> + <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" /> - <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:orientation="horizontal"> + <TextView + android:id="@+id/html_text" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:textStyle="normal" /> - <Button android:id="@+id/copy_intent" - android:layout_width="wrap_content" android:layout_height="wrap_content" - android:onClick="pasteIntent" - android:text="@string/copy_intent" /> + </LinearLayout> - <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 + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal"> - </LinearLayout> + <Button android:id="@+id/copy_intent" + android:layout_width="wrap_content" android:layout_height="wrap_content" + android:onClick="pasteIntent" + android:text="@string/copy_intent" /> - <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" - /> + <Button android:id="@+id/copy_uri" + android:layout_width="wrap_content" android:layout_height="wrap_content" + android:onClick="pasteUri" + android:text="@string/copy_uri" /> - <TextView - android:id="@+id/clip_mime_types" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:layout_weight="0" - android:textStyle="normal" - /> - - <EditText - android:id="@+id/clip_text" - android:layout_width="match_parent" - android:layout_height="0px" - android:layout_weight="1" - android:textStyle="normal" - /> - -</LinearLayout> + </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>
\ No newline at end of file diff --git a/samples/ApiDemos/res/values/arrays.xml b/samples/ApiDemos/res/values/arrays.xml index aac4f7940..150861371 100644 --- a/samples/ApiDemos/res/values/arrays.xml +++ b/samples/ApiDemos/res/values/arrays.xml @@ -42,8 +42,12 @@ <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> <!-- Used in App/SearchInvoke.java --> diff --git a/samples/ApiDemos/src/com/example/android/apis/content/ClipboardSample.java b/samples/ApiDemos/src/com/example/android/apis/content/ClipboardSample.java index e9889028d..cf7d02702 100644 --- a/samples/ApiDemos/src/com/example/android/apis/content/ClipboardSample.java +++ b/samples/ApiDemos/src/com/example/android/apis/content/ClipboardSample.java @@ -26,10 +26,10 @@ import android.content.Intent; import android.content.res.Resources; 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.EditText; import android.widget.Spinner; import android.widget.TextView; import android.widget.AdapterView.OnItemSelectedListener; @@ -39,15 +39,17 @@ public class ClipboardSample extends Activity { Spinner mSpinner; TextView mMimeTypes; - EditText mEditText; + TextView mDataText; CharSequence mStyledText; String mPlainText; + String mHtmlText; + String mHtmlPlainText; ClipboardManager.OnPrimaryClipChangedListener mPrimaryChangeListener = new ClipboardManager.OnPrimaryClipChangedListener() { public void onPrimaryClipChanged() { - updateClipData(); + updateClipData(true); } }; @@ -70,6 +72,11 @@ public class ClipboardSample extends Activity { 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); ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource( this, R.array.clip_data_types, android.R.layout.simple_spinner_item); @@ -79,16 +86,17 @@ public class ClipboardSample extends Activity { new 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); - mEditText = (EditText)findViewById(R.id.clip_text); + mDataText = (TextView)findViewById(R.id.clip_text); mClipboard.addPrimaryClipChangedListener(mPrimaryChangeListener); - updateClipData(); + updateClipData(true); } @Override @@ -105,6 +113,10 @@ public class ClipboardSample extends Activity { 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)); @@ -114,31 +126,74 @@ public class ClipboardSample extends Activity { mClipboard.setPrimaryClip(ClipData.newRawUri("URI", Uri.parse("http://www.android.com/"))); } - void updateClipData() { + void updateClipData(boolean updateType) { ClipData clip = mClipboard.getPrimaryClip(); String[] mimeTypes = clip != null ? clip.getDescription().filterMimeTypes("*/*") : null; - mMimeTypes.setText(""); if (mimeTypes != null) { + mMimeTypes.setText(""); for (int i=0; i<mimeTypes.length; i++) { + if (i > 0) { + mMimeTypes.append("\n"); + } mMimeTypes.append(mimeTypes[i]); - mMimeTypes.append("\n"); } + } else { + mMimeTypes.setText("NULL"); } - if (clip == null) { - mSpinner.setSelection(0); - mEditText.setText(""); - } else if (clip.getItemAt(0).getText() != null) { - mSpinner.setSelection(1); - mEditText.setText(clip.getItemAt(0).getText()); - } else if (clip.getItemAt(0).getIntent() != null) { - mSpinner.setSelection(2); - mEditText.setText(clip.getItemAt(0).getIntent().toUri(0)); - } else if (clip.getItemAt(0).getUri() != null) { - mSpinner.setSelection(3); - mEditText.setText(clip.getItemAt(0).getUri().toString()); + + 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: + 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 { - mSpinner.setSelection(0); - mEditText.setText("Clip containing no data"); + mDataText.setText("(NULL clip)"); } + mDataText.setMovementMethod(LinkMovementMethod.getInstance()); } } |
