mirror of
https://github.com/MatomoCamp/matomocamp-companion-android.git
synced 2024-09-19 16:13:46 +02:00
Added basic Chrome custom tabs integration to open browser links with a more integrated look when available
This commit is contained in:
parent
033ce7ebcf
commit
1519401b54
9 changed files with 55 additions and 13 deletions
|
@ -36,5 +36,6 @@ dependencies {
|
|||
compile "com.android.support:appcompat-v7:$supportLibraryVersion"
|
||||
compile "com.android.support:recyclerview-v7:$supportLibraryVersion"
|
||||
compile "com.android.support:cardview-v7:$supportLibraryVersion"
|
||||
compile "com.android.support:customtabs:$supportLibraryVersion"
|
||||
compile 'com.github.chrisbanes.photoview:library:1.2.4'
|
||||
}
|
||||
|
|
|
@ -1,9 +1,12 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<manifest
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
package="be.digitalia.fosdem"
|
||||
android:installLocation="auto">
|
||||
|
||||
<uses-sdk tools:overrideLibrary="android.support.customtabs"/>
|
||||
|
||||
<uses-permission android:name="android.permission.INTERNET"/>
|
||||
<uses-permission android:name="android.permission.NFC"/>
|
||||
|
||||
|
|
|
@ -1,9 +1,12 @@
|
|||
package be.digitalia.fosdem.activities;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.ActivityNotFoundException;
|
||||
import android.content.Intent;
|
||||
import android.net.Uri;
|
||||
import android.os.Bundle;
|
||||
import android.support.customtabs.CustomTabsIntent;
|
||||
import android.support.v4.content.ContextCompat;
|
||||
import android.support.v7.app.AppCompatActivity;
|
||||
import android.support.v7.widget.Toolbar;
|
||||
import android.text.TextUtils;
|
||||
|
@ -34,10 +37,10 @@ public class RoomImageDialogActivity extends AppCompatActivity {
|
|||
|
||||
setContentView(R.layout.dialog_room_image);
|
||||
((ImageView) findViewById(R.id.room_image)).setImageResource(intent.getIntExtra(EXTRA_ROOM_IMAGE_RESOURCE_ID, 0));
|
||||
configureToolbar((Toolbar) findViewById(R.id.toolbar), roomName);
|
||||
configureToolbar(this, (Toolbar) findViewById(R.id.toolbar), roomName);
|
||||
}
|
||||
|
||||
public static void configureToolbar(final Toolbar toolbar, final String roomName) {
|
||||
public static void configureToolbar(final Activity context, final Toolbar toolbar, final String roomName) {
|
||||
toolbar.setTitle(roomName);
|
||||
if (!TextUtils.isEmpty(roomName)) {
|
||||
toolbar.inflateMenu(R.menu.room_image_dialog);
|
||||
|
@ -47,9 +50,12 @@ public class RoomImageDialogActivity extends AppCompatActivity {
|
|||
switch (item.getItemId()) {
|
||||
case R.id.navigation:
|
||||
String localNavigationUrl = FosdemUrls.getLocalNavigationToLocation(StringUtils.toSlug(roomName));
|
||||
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(localNavigationUrl));
|
||||
try {
|
||||
toolbar.getContext().startActivity(intent);
|
||||
new CustomTabsIntent.Builder()
|
||||
.setToolbarColor(ContextCompat.getColor(context, R.color.color_primary))
|
||||
.setShowTitle(true)
|
||||
.build()
|
||||
.launchUrl(context, Uri.parse(localNavigationUrl));
|
||||
} catch (ActivityNotFoundException ignore) {
|
||||
}
|
||||
break;
|
||||
|
|
|
@ -11,10 +11,12 @@ import android.os.AsyncTask;
|
|||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.provider.CalendarContract;
|
||||
import android.support.customtabs.CustomTabsIntent;
|
||||
import android.support.v4.app.Fragment;
|
||||
import android.support.v4.app.LoaderManager;
|
||||
import android.support.v4.app.LoaderManager.LoaderCallbacks;
|
||||
import android.support.v4.app.ShareCompat;
|
||||
import android.support.v4.content.ContextCompat;
|
||||
import android.support.v4.content.Loader;
|
||||
import android.text.Spannable;
|
||||
import android.text.SpannableString;
|
||||
|
@ -493,7 +495,7 @@ public class EventDetailsFragment extends Fragment {
|
|||
}
|
||||
}
|
||||
|
||||
private static class LinkClickListener implements View.OnClickListener {
|
||||
private class LinkClickListener implements View.OnClickListener {
|
||||
|
||||
private final Link link;
|
||||
|
||||
|
@ -505,9 +507,15 @@ public class EventDetailsFragment extends Fragment {
|
|||
public void onClick(View v) {
|
||||
String url = link.getUrl();
|
||||
if (url != null) {
|
||||
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
|
||||
try {
|
||||
v.getContext().startActivity(intent);
|
||||
Activity context = getActivity();
|
||||
new CustomTabsIntent.Builder()
|
||||
.setToolbarColor(ContextCompat.getColor(context, event.getTrack().getType().getColorResId()))
|
||||
.setShowTitle(true)
|
||||
.setStartAnimations(context, R.anim.slide_in_right, R.anim.slide_out_left)
|
||||
.setExitAnimations(context, R.anim.slide_in_left, R.anim.slide_out_right)
|
||||
.build()
|
||||
.launchUrl(context, Uri.parse(url));
|
||||
} catch (ActivityNotFoundException ignore) {
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,10 +1,13 @@
|
|||
package be.digitalia.fosdem.fragments;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.ActivityNotFoundException;
|
||||
import android.content.Intent;
|
||||
import android.net.Uri;
|
||||
import android.os.Bundle;
|
||||
import android.support.customtabs.CustomTabsIntent;
|
||||
import android.support.v4.app.Fragment;
|
||||
import android.support.v4.content.ContextCompat;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.Menu;
|
||||
import android.view.MenuInflater;
|
||||
|
@ -66,9 +69,13 @@ public class MapFragment extends Fragment {
|
|||
}
|
||||
|
||||
private void launchLocalNavigation() {
|
||||
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(FosdemUrls.getLocalNavigation()));
|
||||
try {
|
||||
startActivity(intent);
|
||||
Activity context = getActivity();
|
||||
new CustomTabsIntent.Builder()
|
||||
.setToolbarColor(ContextCompat.getColor(context, R.color.color_primary))
|
||||
.setShowTitle(true)
|
||||
.build()
|
||||
.launchUrl(context, Uri.parse(FosdemUrls.getLocalNavigation()));
|
||||
} catch (ActivityNotFoundException ignore) {
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,12 +1,14 @@
|
|||
package be.digitalia.fosdem.fragments;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.ActivityNotFoundException;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.database.Cursor;
|
||||
import android.net.Uri;
|
||||
import android.os.Bundle;
|
||||
import android.support.customtabs.CustomTabsIntent;
|
||||
import android.support.v4.app.LoaderManager.LoaderCallbacks;
|
||||
import android.support.v4.content.ContextCompat;
|
||||
import android.support.v4.content.Loader;
|
||||
import android.support.v7.widget.ConcatAdapter;
|
||||
import android.support.v7.widget.LinearLayoutManager;
|
||||
|
@ -60,9 +62,14 @@ public class PersonInfoListFragment extends RecyclerViewFragment implements Load
|
|||
case R.id.more_info:
|
||||
String url = person.getUrl();
|
||||
if (url != null) {
|
||||
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
|
||||
try {
|
||||
startActivity(intent);
|
||||
Activity context = getActivity();
|
||||
new CustomTabsIntent.Builder()
|
||||
.setToolbarColor(ContextCompat.getColor(context, R.color.color_primary))
|
||||
.setStartAnimations(context, R.anim.slide_in_right, R.anim.slide_out_left)
|
||||
.setExitAnimations(context, R.anim.slide_in_left, R.anim.slide_out_right)
|
||||
.build()
|
||||
.launchUrl(context, Uri.parse(url));
|
||||
} catch (ActivityNotFoundException ignore) {
|
||||
}
|
||||
}
|
||||
|
|
|
@ -41,7 +41,7 @@ public class RoomImageDialogFragment extends DialogFragment {
|
|||
View contentView = LayoutInflater.from(getContext()).inflate(R.layout.dialog_room_image, null);
|
||||
((ImageView) contentView.findViewById(R.id.room_image)).setImageResource(args.getInt(ARG_ROOM_IMAGE_RESOURCE_ID));
|
||||
Toolbar toolbar = (Toolbar) contentView.findViewById(R.id.toolbar);
|
||||
RoomImageDialogActivity.configureToolbar(toolbar, args.getString(ARG_ROOM_NAME));
|
||||
RoomImageDialogActivity.configureToolbar(getActivity(), toolbar, args.getString(ARG_ROOM_NAME));
|
||||
|
||||
Dialog dialog = new AlertDialog.Builder(getActivity())
|
||||
.setView(contentView)
|
||||
|
|
5
app/src/main/res/anim/slide_in_left.xml
Normal file
5
app/src/main/res/anim/slide_in_left.xml
Normal file
|
@ -0,0 +1,5 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<translate xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:duration="@android:integer/config_mediumAnimTime"
|
||||
android:fromXDelta="-100%p"
|
||||
android:toXDelta="0" />
|
5
app/src/main/res/anim/slide_out_left.xml
Normal file
5
app/src/main/res/anim/slide_out_left.xml
Normal file
|
@ -0,0 +1,5 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<translate xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:duration="@android:integer/config_mediumAnimTime"
|
||||
android:fromXDelta="0"
|
||||
android:toXDelta="-100%p" />
|
Loading…
Reference in a new issue