Add image descriptions indicator (#697)
* Add image descriptions indicator. Closes #683 * Add bg for description indicator, change symbol * Use icon for image description indicator
This commit is contained in:
parent
899bc15918
commit
6fcb3cb495
|
@ -1134,6 +1134,7 @@ public final class ComposeActivity
|
||||||
Attachment attachment = response.body();
|
Attachment attachment = response.body();
|
||||||
if (response.isSuccessful() && attachment != null) {
|
if (response.isSuccessful() && attachment != null) {
|
||||||
item.description = attachment.getDescription();
|
item.description = attachment.getDescription();
|
||||||
|
item.preview.setChecked(item.description != null && !item.description.isEmpty());
|
||||||
dialog.dismiss();
|
dialog.dismiss();
|
||||||
} else {
|
} else {
|
||||||
showFailedCaptionMessage();
|
showFailedCaptionMessage();
|
||||||
|
|
|
@ -22,8 +22,11 @@ import android.graphics.Paint;
|
||||||
import android.graphics.PorterDuff;
|
import android.graphics.PorterDuff;
|
||||||
import android.graphics.PorterDuffXfermode;
|
import android.graphics.PorterDuffXfermode;
|
||||||
import android.graphics.RectF;
|
import android.graphics.RectF;
|
||||||
|
import android.graphics.drawable.Drawable;
|
||||||
import android.support.annotation.Nullable;
|
import android.support.annotation.Nullable;
|
||||||
import android.support.v4.content.ContextCompat;
|
import android.support.v4.content.ContextCompat;
|
||||||
|
import android.support.v4.graphics.drawable.DrawableCompat;
|
||||||
|
import android.support.v7.content.res.AppCompatResources;
|
||||||
import android.support.v7.widget.AppCompatImageView;
|
import android.support.v7.widget.AppCompatImageView;
|
||||||
import android.util.AttributeSet;
|
import android.util.AttributeSet;
|
||||||
|
|
||||||
|
@ -33,10 +36,12 @@ import at.connyduck.sparkbutton.helpers.Utils;
|
||||||
public final class ProgressImageView extends AppCompatImageView {
|
public final class ProgressImageView extends AppCompatImageView {
|
||||||
|
|
||||||
private int progress = -1;
|
private int progress = -1;
|
||||||
private RectF progressRect = new RectF();
|
private final RectF progressRect = new RectF();
|
||||||
private RectF biggerRect = new RectF();
|
private final RectF biggerRect = new RectF();
|
||||||
private Paint circlePaint = new Paint(Paint.ANTI_ALIAS_FLAG);
|
private final Paint circlePaint = new Paint(Paint.ANTI_ALIAS_FLAG);
|
||||||
private Paint clearPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
|
private final Paint clearPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
|
||||||
|
private final Paint markBgPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
|
||||||
|
private Drawable captionDrawable;
|
||||||
|
|
||||||
public ProgressImageView(Context context) {
|
public ProgressImageView(Context context) {
|
||||||
super(context);
|
super(context);
|
||||||
|
@ -59,6 +64,11 @@ public final class ProgressImageView extends AppCompatImageView {
|
||||||
circlePaint.setStyle(Paint.Style.STROKE);
|
circlePaint.setStyle(Paint.Style.STROKE);
|
||||||
|
|
||||||
clearPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_OUT));
|
clearPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_OUT));
|
||||||
|
|
||||||
|
markBgPaint.setStyle(Paint.Style.FILL);
|
||||||
|
markBgPaint.setColor(ContextCompat.getColor(getContext(),
|
||||||
|
R.color.description_marker_unselected));
|
||||||
|
captionDrawable = AppCompatResources.getDrawable(getContext(), R.drawable.spellcheck);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setProgress(int progress) {
|
public void setProgress(int progress) {
|
||||||
|
@ -71,12 +81,15 @@ public final class ProgressImageView extends AppCompatImageView {
|
||||||
invalidate();
|
invalidate();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setChecked(boolean checked) {
|
||||||
|
this.markBgPaint.setColor(ContextCompat.getColor(getContext(),
|
||||||
|
checked ? R.color.colorPrimary : R.color.description_marker_unselected));
|
||||||
|
invalidate();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onDraw(Canvas canvas) {
|
protected void onDraw(Canvas canvas) {
|
||||||
super.onDraw(canvas);
|
super.onDraw(canvas);
|
||||||
if (progress == -1) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
float angle = (progress / 100f) * 360 - 90;
|
float angle = (progress / 100f) * 360 - 90;
|
||||||
float halfWidth = canvas.getWidth() / 2;
|
float halfWidth = canvas.getWidth() / 2;
|
||||||
|
@ -86,8 +99,25 @@ public final class ProgressImageView extends AppCompatImageView {
|
||||||
int margin = 8;
|
int margin = 8;
|
||||||
biggerRect.set(progressRect.left - margin, progressRect.top - margin, progressRect.right + margin, progressRect.bottom + margin);
|
biggerRect.set(progressRect.left - margin, progressRect.top - margin, progressRect.right + margin, progressRect.bottom + margin);
|
||||||
canvas.saveLayer(biggerRect, null, Canvas.ALL_SAVE_FLAG);
|
canvas.saveLayer(biggerRect, null, Canvas.ALL_SAVE_FLAG);
|
||||||
|
if (progress != -1) {
|
||||||
canvas.drawOval(progressRect, circlePaint);
|
canvas.drawOval(progressRect, circlePaint);
|
||||||
canvas.drawArc(biggerRect, angle, 360 - angle - 90, true, clearPaint);
|
canvas.drawArc(biggerRect, angle, 360 - angle - 90, true, clearPaint);
|
||||||
|
}
|
||||||
canvas.restore();
|
canvas.restore();
|
||||||
|
|
||||||
|
int circleRadius = Utils.dpToPx(getContext(), 14);
|
||||||
|
int circleMargin = Utils.dpToPx(getContext(), 14);
|
||||||
|
|
||||||
|
int circleY = canvas.getHeight() - circleMargin - circleRadius / 2;
|
||||||
|
int circleX = canvas.getWidth() - circleMargin - circleRadius / 2;
|
||||||
|
|
||||||
|
canvas.drawCircle(circleX, circleY, circleRadius, markBgPaint);
|
||||||
|
|
||||||
|
captionDrawable.setBounds(canvas.getWidth() - circleMargin - circleRadius,
|
||||||
|
canvas.getHeight() - circleMargin - circleRadius,
|
||||||
|
canvas.getWidth() - circleMargin,
|
||||||
|
canvas.getHeight() - circleMargin);
|
||||||
|
DrawableCompat.setTint(captionDrawable, Color.WHITE);
|
||||||
|
captionDrawable.draw(canvas);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,8 @@
|
||||||
|
<!-- drawable/spellcheck.xml -->
|
||||||
|
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:height="24dp"
|
||||||
|
android:width="24dp"
|
||||||
|
android:viewportWidth="24"
|
||||||
|
android:viewportHeight="24">
|
||||||
|
<path android:fillColor="#000" android:pathData="M21.59,11.59L13.5,19.68L9.83,16L8.42,17.41L13.5,22.5L23,13M6.43,11L8.5,5.5L10.57,11M12.45,16H14.54L9.43,3H7.57L2.46,16H4.55L5.67,13H11.31L12.45,16Z" />
|
||||||
|
</vector>
|
|
@ -5,6 +5,7 @@
|
||||||
<color name="toolbar_view_media">#8f000000</color>
|
<color name="toolbar_view_media">#8f000000</color>
|
||||||
<color name="semi_transparent">#33000000</color>
|
<color name="semi_transparent">#33000000</color>
|
||||||
<color name="header_background_filter">#44000000</color>
|
<color name="header_background_filter">#44000000</color>
|
||||||
|
<color name="description_marker_unselected">#333</color>
|
||||||
|
|
||||||
<!--Dark Theme Colors-->
|
<!--Dark Theme Colors-->
|
||||||
<color name="color_primary_dark">#4c5368</color>
|
<color name="color_primary_dark">#4c5368</color>
|
||||||
|
|
Loading…
Reference in New Issue