From 17b4e020f4c0dba5c23b10001b8f43cdd03172ff Mon Sep 17 00:00:00 2001 From: olly Date: Fri, 4 May 2018 20:45:16 -0700 Subject: [PATCH] Tweak sample chooser ------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=195511490 --- .../demo/SampleChooserActivity.java | 72 +++++++++--------- .../ic_offline_pin_white_36dp.png | Bin 0 -> 551 bytes .../ic_offline_pin_white_36dp.png | Bin 0 -> 388 bytes .../ic_offline_pin_white_36dp.png | Bin 0 -> 691 bytes .../ic_offline_pin_white_36dp.png | Bin 0 -> 1049 bytes .../ic_offline_pin_white_36dp.png | Bin 0 -> 1375 bytes .../main/res/layout/downloader_activity.xml | 29 ++++--- .../src/main/res/layout/sample_list_item.xml | 44 +++++------ demos/main/src/main/res/values/strings.xml | 2 - 9 files changed, 68 insertions(+), 79 deletions(-) create mode 100644 demos/main/src/main/res/drawable-hdpi/ic_offline_pin_white_36dp.png create mode 100644 demos/main/src/main/res/drawable-mdpi/ic_offline_pin_white_36dp.png create mode 100644 demos/main/src/main/res/drawable-xhdpi/ic_offline_pin_white_36dp.png create mode 100644 demos/main/src/main/res/drawable-xxhdpi/ic_offline_pin_white_36dp.png create mode 100644 demos/main/src/main/res/drawable-xxxhdpi/ic_offline_pin_white_36dp.png diff --git a/demos/main/src/main/java/com/google/android/exoplayer2/demo/SampleChooserActivity.java b/demos/main/src/main/java/com/google/android/exoplayer2/demo/SampleChooserActivity.java index 6d975a128d..327c5c1f47 100644 --- a/demos/main/src/main/java/com/google/android/exoplayer2/demo/SampleChooserActivity.java +++ b/demos/main/src/main/java/com/google/android/exoplayer2/demo/SampleChooserActivity.java @@ -98,29 +98,22 @@ public class SampleChooserActivity extends Activity { } ExpandableListView sampleList = findViewById(R.id.sample_list); sampleList.setAdapter(new SampleAdapter(this, groups)); - sampleList.setOnChildClickListener(new OnChildClickListener() { - @Override - public boolean onChildClick(ExpandableListView parent, View view, int groupPosition, - int childPosition, long id) { - onSampleSelected(groups.get(groupPosition).samples.get(childPosition)); - return true; - } - }); + sampleList.setOnChildClickListener( + new OnChildClickListener() { + @Override + public boolean onChildClick( + ExpandableListView parent, View view, int groupPosition, int childPosition, long id) { + onSampleClicked(groups.get(groupPosition).samples.get(childPosition)); + return true; + } + }); } - private void onSampleSelected(Sample sample) { + private void onSampleClicked(Sample sample) { startActivity(sample.buildIntent(this)); } private void onSampleDownloadButtonClicked(Sample sample) { - if (!(sample instanceof UriSample) || sample.drmInfo != null) { - Toast.makeText( - getApplicationContext(), - R.string.download_only_single_period_non_drm_protected, - Toast.LENGTH_SHORT) - .show(); - return; - } Intent intent = new Intent(this, DownloadActivity.class); intent.putExtra(DownloadActivity.SAMPLE_NAME, sample.name); intent.putExtra(DownloadActivity.PLAYER_INTENT, sample.buildIntent(this)); @@ -198,7 +191,7 @@ public class SampleChooserActivity extends Activity { private Sample readEntry(JsonReader reader, boolean insidePlaylist) throws IOException { String sampleName = null; - String uri = null; + Uri uri = null; String extension = null; String drmScheme = null; String drmLicenseUrl = null; @@ -217,7 +210,7 @@ public class SampleChooserActivity extends Activity { sampleName = reader.nextString(); break; case "uri": - uri = reader.nextString(); + uri = Uri.parse(reader.nextString()); break; case "extension": extension = reader.nextString(); @@ -301,11 +294,10 @@ public class SampleChooserActivity extends Activity { } - private final class SampleAdapter extends BaseExpandableListAdapter { + private final class SampleAdapter extends BaseExpandableListAdapter implements OnClickListener { private final Context context; private final List sampleGroups; - private OnClickListener onClickListener; public SampleAdapter(Context context, List sampleGroups) { this.context = context; @@ -328,6 +320,7 @@ public class SampleChooserActivity extends Activity { View view = convertView; if (view == null) { view = LayoutInflater.from(context).inflate(R.layout.sample_list_item, parent, false); + view.findViewById(R.id.download_button).setOnClickListener(this); } initializeChildView(view, getChild(groupPosition, childPosition)); return view; @@ -375,27 +368,30 @@ public class SampleChooserActivity extends Activity { return true; } + @Override + public void onClick(View view) { + onSampleDownloadButtonClicked((Sample) view.getTag()); + } + private void initializeChildView(View view, Sample sample) { TextView sampleTitle = view.findViewById(R.id.sample_title); sampleTitle.setText(sample.name); - ImageButton downloadButton = view.findViewById(R.id.download_button); - downloadButton.setFocusable(false); - downloadButton.setOnClickListener(getOnClickListener()); downloadButton.setTag(sample); + downloadButton.setColorFilter(0xFFBBBBBB); + downloadButton.setVisibility(canDownload(sample) ? View.VISIBLE : View.GONE); } - private OnClickListener getOnClickListener() { - if (onClickListener == null) { - onClickListener = - new OnClickListener() { - @Override - public void onClick(View v) { - onSampleDownloadButtonClicked((Sample) v.getTag()); - } - }; + private boolean canDownload(Sample sample) { + if (!(sample instanceof UriSample)) { + return false; } - return onClickListener; + UriSample uriSample = (UriSample) sample; + if (uriSample.drmInfo != null || uriSample.adTagUri != null) { + return false; + } + String scheme = uriSample.uri.getScheme(); + return "http".equals(scheme) || "https".equals(scheme); } } @@ -465,7 +461,7 @@ public class SampleChooserActivity extends Activity { private static final class UriSample extends Sample { - public final String uri; + public final Uri uri; public final String extension; public final String adTagUri; @@ -474,7 +470,7 @@ public class SampleChooserActivity extends Activity { boolean preferExtensionDecoders, String abrAlgorithm, DrmInfo drmInfo, - String uri, + Uri uri, String extension, String adTagUri) { super(name, preferExtensionDecoders, abrAlgorithm, drmInfo); @@ -486,7 +482,7 @@ public class SampleChooserActivity extends Activity { @Override public Intent buildIntent(Context context) { return super.buildIntent(context) - .setData(Uri.parse(uri)) + .setData(uri) .putExtra(PlayerActivity.EXTENSION_EXTRA, extension) .putExtra(PlayerActivity.AD_TAG_URI_EXTRA, adTagUri) .setAction(PlayerActivity.ACTION_VIEW); @@ -510,7 +506,7 @@ public class SampleChooserActivity extends Activity { @Override public Intent buildIntent(Context context) { - String[] uris = new String[children.length]; + Uri[] uris = new Uri[children.length]; String[] extensions = new String[children.length]; for (int i = 0; i < children.length; i++) { uris[i] = children[i].uri; diff --git a/demos/main/src/main/res/drawable-hdpi/ic_offline_pin_white_36dp.png b/demos/main/src/main/res/drawable-hdpi/ic_offline_pin_white_36dp.png new file mode 100644 index 0000000000000000000000000000000000000000..4a19766f39667626d55c0d79a006251a5d09ca92 GIT binary patch literal 551 zcmV+?0@(eDP)(=NxSsBxln1dt?FG9Yz75pHICCyV$yXUBLPM;AICXDFOq>d^-WiLGAiiC{)G7_e| z@r4BpSYd0$fS@XN$vtIT(~)B*T;tlDh6HP}Mbd`I6>F0sEv4mxwRxmUkF?8TO;W0s z5|zPD1otXouDN#&J9aIg8U)PPZ*IdbMU+Bmxz7KvfO`Rz-+&+d+jjypHjq=ikAAfr~q&dt={`68eI z!Xnm3*H1o>UlR)`=oYaN`cmHK950+H7#6V!rgk|epkVBR!H#!&N{WrZ%IPV=pRos4 zPEQH`L7HIY-U=uP^*?Gmx5TxKn(c8V&;Gc|A4uMd1+N%!uLLhoVM~|Kf*X{>+^}EI zj0LQ{Vs{*wF~vu(*oEyQ^{Y2*R_612L*ACp4znfifnz(Sh)Aj0j_`0trq-bjgF9NT z$J~ewk{$>p2lxhaT$^z$UrlsaQ?@%UsxMvo++u4Du6WQi4vrPx`R*n0xo4Gka1AscENmpO!Z0IxtcdI8Z|K6Y*Z%_H4pbeMP6 z&iMR0ieG>*JE(sc9R?U`EQjMPHHHBlRCwW+dz4s0SxWL$Xu^(ITgEb^F{D(XW02;F z)E4N|kU?sXYkmrvAoa`@D_o-x)MFa2p_E`)Ejp`BY)Y3-&Q66Accy=BO=t0#SZNZ71=CyXcalz*3g=+gWSfg zq2Z}V?VL6}#2)?&QhP+lucLY5yV3FmIbuVsHN(^^J7JZl literal 0 HcmV?d00001 diff --git a/demos/main/src/main/res/drawable-xhdpi/ic_offline_pin_white_36dp.png b/demos/main/src/main/res/drawable-xhdpi/ic_offline_pin_white_36dp.png new file mode 100644 index 0000000000000000000000000000000000000000..81caa4a1f6696ccfc1389cf1dbd92a1ca6b332c9 GIT binary patch literal 691 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 literal 0 HcmV?d00001 diff --git a/demos/main/src/main/res/layout/downloader_activity.xml b/demos/main/src/main/res/layout/downloader_activity.xml index 220dcda7ea..64975e8b98 100644 --- a/demos/main/src/main/res/layout/downloader_activity.xml +++ b/demos/main/src/main/res/layout/downloader_activity.xml @@ -1,19 +1,18 @@ - + - + - - + android:background="@android:color/transparent" + android:src="@drawable/ic_offline_pin_white_36dp"/> diff --git a/demos/main/src/main/res/values/strings.xml b/demos/main/src/main/res/values/strings.xml index 24251b17ca..a474c95369 100644 --- a/demos/main/src/main/res/values/strings.xml +++ b/demos/main/src/main/res/values/strings.xml @@ -51,6 +51,4 @@ Remove all - Currently only downloading of single period non-DRM protected content is demonstrated in this app. -