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
4 changed files with 49 additions and 9 deletions
|
@ -1134,6 +1134,7 @@ public final class ComposeActivity
|
|||
Attachment attachment = response.body();
|
||||
if (response.isSuccessful() && attachment != null) {
|
||||
item.description = attachment.getDescription();
|
||||
item.preview.setChecked(item.description != null && !item.description.isEmpty());
|
||||
dialog.dismiss();
|
||||
} else {
|
||||
showFailedCaptionMessage();
|
||||
|
|
|
@ -22,8 +22,11 @@ import android.graphics.Paint;
|
|||
import android.graphics.PorterDuff;
|
||||
import android.graphics.PorterDuffXfermode;
|
||||
import android.graphics.RectF;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.support.annotation.Nullable;
|
||||
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.util.AttributeSet;
|
||||
|
||||
|
@ -33,10 +36,12 @@ import at.connyduck.sparkbutton.helpers.Utils;
|
|||
public final class ProgressImageView extends AppCompatImageView {
|
||||
|
||||
private int progress = -1;
|
||||
private RectF progressRect = new RectF();
|
||||
private RectF biggerRect = new RectF();
|
||||
private Paint circlePaint = new Paint(Paint.ANTI_ALIAS_FLAG);
|
||||
private Paint clearPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
|
||||
private final RectF progressRect = new RectF();
|
||||
private final RectF biggerRect = new RectF();
|
||||
private final Paint circlePaint = 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) {
|
||||
super(context);
|
||||
|
@ -59,6 +64,11 @@ public final class ProgressImageView extends AppCompatImageView {
|
|||
circlePaint.setStyle(Paint.Style.STROKE);
|
||||
|
||||
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) {
|
||||
|
@ -71,12 +81,15 @@ public final class ProgressImageView extends AppCompatImageView {
|
|||
invalidate();
|
||||
}
|
||||
|
||||
public void setChecked(boolean checked) {
|
||||
this.markBgPaint.setColor(ContextCompat.getColor(getContext(),
|
||||
checked ? R.color.colorPrimary : R.color.description_marker_unselected));
|
||||
invalidate();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onDraw(Canvas canvas) {
|
||||
super.onDraw(canvas);
|
||||
if (progress == -1) {
|
||||
return;
|
||||
}
|
||||
|
||||
float angle = (progress / 100f) * 360 - 90;
|
||||
float halfWidth = canvas.getWidth() / 2;
|
||||
|
@ -86,8 +99,25 @@ public final class ProgressImageView extends AppCompatImageView {
|
|||
int margin = 8;
|
||||
biggerRect.set(progressRect.left - margin, progressRect.top - margin, progressRect.right + margin, progressRect.bottom + margin);
|
||||
canvas.saveLayer(biggerRect, null, Canvas.ALL_SAVE_FLAG);
|
||||
canvas.drawOval(progressRect, circlePaint);
|
||||
canvas.drawArc(biggerRect, angle, 360 - angle - 90, true, clearPaint);
|
||||
if (progress != -1) {
|
||||
canvas.drawOval(progressRect, circlePaint);
|
||||
canvas.drawArc(biggerRect, angle, 360 - angle - 90, true, clearPaint);
|
||||
}
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
|
8
app/src/main/res/drawable/spellcheck.xml
Normal file
8
app/src/main/res/drawable/spellcheck.xml
Normal file
|
@ -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="semi_transparent">#33000000</color>
|
||||
<color name="header_background_filter">#44000000</color>
|
||||
<color name="description_marker_unselected">#333</color>
|
||||
|
||||
<!--Dark Theme Colors-->
|
||||
<color name="color_primary_dark">#4c5368</color>
|
||||
|
|
Loading…
Reference in a new issue