diff --git a/drawable_resources/shared_via_link.svg b/drawable_resources/shared_via_link.svg index 4eaa7bbd77..51ea807400 100644 --- a/drawable_resources/shared_via_link.svg +++ b/drawable_resources/shared_via_link.svg @@ -1,20 +1,11 @@ - + inkscape:version="1.0 (4035a4fb49, 2020-05-01)" sodipodi:docname="shared_via_link.svg" id="svg8" version="1.1" + width="16" height="16"> @@ -28,37 +19,18 @@ - - - + + - + + style="block-progression:tb;text-transform:none;text-indent:0;fill:#000000;fill-opacity:1;stroke:none;stroke-opacity:1;stroke-width:0.2;stroke-miterlimit:4;stroke-dasharray:none" /> diff --git a/src/main/java/com/owncloud/android/ui/adapter/ActivityListAdapter.java b/src/main/java/com/owncloud/android/ui/adapter/ActivityListAdapter.java index ad510103c6..67a49a836a 100644 --- a/src/main/java/com/owncloud/android/ui/adapter/ActivityListAdapter.java +++ b/src/main/java/com/owncloud/android/ui/adapter/ActivityListAdapter.java @@ -23,8 +23,11 @@ package com.owncloud.android.ui.adapter; import android.content.Context; +import android.content.res.Configuration; import android.content.res.Resources; -import android.graphics.drawable.PictureDrawable; +import android.graphics.Bitmap; +import android.graphics.Color; +import android.graphics.PorterDuff; import android.net.Uri; import android.text.Spannable; import android.text.SpannableStringBuilder; @@ -69,9 +72,8 @@ import com.owncloud.android.ui.interfaces.ActivityListInterface; import com.owncloud.android.utils.DisplayUtils; import com.owncloud.android.utils.MimeTypeUtil; import com.owncloud.android.utils.glide.CustomGlideStreamLoader; +import com.owncloud.android.utils.svg.SvgBitmapTranscoder; import com.owncloud.android.utils.svg.SvgDecoder; -import com.owncloud.android.utils.svg.SvgDrawableTranscoder; -import com.owncloud.android.utils.svg.SvgSoftwareLayerSetter; import java.io.InputStream; import java.util.ArrayList; @@ -196,9 +198,22 @@ public class ActivityListAdapter extends RecyclerView.Adapter 0) { activityViewHolder.list.setVisibility(View.VISIBLE); @@ -329,21 +344,20 @@ public class ActivityListAdapter extends RecyclerView.Adapter requestBuilder = Glide.with(context) + private void downloadIcon(Activity activity, ImageView itemViewType) { + GenericRequestBuilder requestBuilder = Glide.with(context) .using(Glide.buildStreamModelLoader(Uri.class, context), InputStream.class) .from(Uri.class) .as(SVG.class) - .transcode(new SvgDrawableTranscoder(), PictureDrawable.class) + .transcode(new SvgBitmapTranscoder(128, 128), Bitmap.class) .sourceEncoder(new StreamEncoder()) .cacheDecoder(new FileToStreamDecoder<>(new SvgDecoder())) .decoder(new SvgDecoder()) .placeholder(R.drawable.ic_activity) .error(R.drawable.ic_activity) - .animate(android.R.anim.fade_in) - .listener(new SvgSoftwareLayerSetter<>()); + .animate(android.R.anim.fade_in); - Uri uri = Uri.parse(icon); + Uri uri = Uri.parse(activity.getIcon()); requestBuilder .diskCacheStrategy(DiskCacheStrategy.SOURCE) .load(uri) diff --git a/src/main/java/com/owncloud/android/utils/svg/SvgBitmapTranscoder.java b/src/main/java/com/owncloud/android/utils/svg/SvgBitmapTranscoder.java new file mode 100644 index 0000000000..01a7c38047 --- /dev/null +++ b/src/main/java/com/owncloud/android/utils/svg/SvgBitmapTranscoder.java @@ -0,0 +1,73 @@ +/* + * + * Nextcloud Android client application + * + * @author Tobias Kaminsky + * Copyright (C) 2020 Tobias Kaminsky + * Copyright (C) 2020 Nextcloud GmbH + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ +package com.owncloud.android.utils.svg; + +import android.graphics.Bitmap; +import android.graphics.Canvas; + +import com.bumptech.glide.load.engine.Resource; +import com.bumptech.glide.load.resource.SimpleResource; +import com.bumptech.glide.load.resource.transcode.ResourceTranscoder; +import com.caverock.androidsvg.SVG; +import com.caverock.androidsvg.SVGParseException; +import com.owncloud.android.lib.common.utils.Log_OC; + +/** + * Convert the {@link SVG}'s internal representation to a Bitmap. + */ +public class SvgBitmapTranscoder implements ResourceTranscoder { + private int width; + private int height; + + public SvgBitmapTranscoder(int width, int height) { + this.width = width; + this.height = height; + } + + @Override + public Resource transcode(Resource toTranscode) { + SVG svg = toTranscode.get(); + + svg.setDocumentViewBox(0, 0, svg.getDocumentWidth(), svg.getDocumentHeight()); + + try { + svg.setDocumentHeight("100%"); + svg.setDocumentWidth("100%"); + } catch (SVGParseException e) { + Log_OC.e(this, "Could not set document size. Output might have wrong size"); + } + + // Create a canvas to draw onto + Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888); + Canvas canvas = new Canvas(bitmap); + + // Render our document onto our canvas + svg.renderToCanvas(canvas); + + return new SimpleResource<>(bitmap); + } + + @Override + public String getId() { + return ""; + } +} diff --git a/src/main/res/drawable-night/shared_via_link.xml b/src/main/res/drawable-night/shared_via_link.xml index 5f9cdea103..7414129bea 100644 --- a/src/main/res/drawable-night/shared_via_link.xml +++ b/src/main/res/drawable-night/shared_via_link.xml @@ -23,14 +23,14 @@ android:viewportHeight="16.0"> diff --git a/src/main/res/drawable/shared_via_link.xml b/src/main/res/drawable/shared_via_link.xml index 35b7cb533d..10cea077c6 100644 --- a/src/main/res/drawable/shared_via_link.xml +++ b/src/main/res/drawable/shared_via_link.xml @@ -23,14 +23,14 @@ android:viewportHeight="16.0"> diff --git a/src/main/res/layout/activity_list_item.xml b/src/main/res/layout/activity_list_item.xml index 5351e23e61..8e74815ed5 100644 --- a/src/main/res/layout/activity_list_item.xml +++ b/src/main/res/layout/activity_list_item.xml @@ -36,7 +36,6 @@ android:layout_marginTop="@dimen/standard_margin" android:alpha="0.5" android:padding="2dp" - android:background="@drawable/round_bgnd_icons" android:contentDescription="@string/activity_icon" android:src="@drawable/ic_activity" />