Forum, nested discussions front end UI/UX, rev 2

This commit is contained in:
Ernir Erlingsson
2016-04-18 11:04:43 +02:00
parent 661140f623
commit 86039b81c0
30 changed files with 1727 additions and 925 deletions

View File

@@ -1,6 +1,7 @@
package org.briarproject.android.util;
import android.content.Context;
import android.content.res.TypedArray;
import android.os.Build;
import android.support.v7.widget.RecyclerView;
import android.util.AttributeSet;
@@ -18,6 +19,7 @@ public class BriarRecyclerView extends FrameLayout {
private TextView emptyView;
private ProgressBar progressBar;
private RecyclerView.AdapterDataObserver emptyObserver;
private boolean isScrollingToEnd = false;
public BriarRecyclerView(Context context) {
super(context);
@@ -25,6 +27,11 @@ public class BriarRecyclerView extends FrameLayout {
public BriarRecyclerView(Context context, AttributeSet attrs) {
super(context, attrs);
TypedArray attributes = context.obtainStyledAttributes(attrs,
R.styleable.BriarRecyclerView);
isScrollingToEnd = attributes
.getBoolean(R.styleable.BriarRecyclerView_scrollToEnd, true);
}
public BriarRecyclerView(Context context, AttributeSet attrs,
@@ -44,7 +51,7 @@ public class BriarRecyclerView extends FrameLayout {
showProgressBar();
// scroll down when opening keyboard
if (Build.VERSION.SDK_INT >= 11) {
if (isScrollingToEnd && Build.VERSION.SDK_INT >= 11) {
recyclerView.addOnLayoutChangeListener(
new View.OnLayoutChangeListener() {
@Override

View File

@@ -1,11 +1,16 @@
package org.briarproject.android.util;
import android.animation.Animator;
import android.animation.ArgbEvaluator;
import android.animation.ValueAnimator;
import android.annotation.SuppressLint;
import android.graphics.drawable.ColorDrawable;
import android.os.Build;
import android.view.View;
import android.view.ViewGroup;
import org.briarproject.android.controller.handler.ResultHandler;
import static android.view.View.GONE;
import static android.view.View.MeasureSpec.UNSPECIFIED;
import static android.view.View.VISIBLE;
@@ -21,6 +26,49 @@ public class CustomAnimations {
}
}
@SuppressLint("NewApi")
public static void animateColorTransition(final View view, int color,
int duration, final ResultHandler<Void> finishedCallback) {
// No soup for Gingerbread
if (Build.VERSION.SDK_INT < 11) {
return;
}
ValueAnimator anim = new ValueAnimator();
ColorDrawable viewColor = (ColorDrawable) view.getBackground();
anim.setIntValues(viewColor.getColor(), color);
anim.setEvaluator(new ArgbEvaluator());
anim.addListener(new Animator.AnimatorListener() {
@Override
public void onAnimationStart(Animator animation) {
}
@Override
public void onAnimationEnd(Animator animation) {
if (finishedCallback != null) finishedCallback.onResult(null);
}
@Override
public void onAnimationCancel(Animator animation) {
}
@Override
public void onAnimationRepeat(Animator animation) {
}
});
anim.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator valueAnimator) {
view.setBackgroundColor((Integer)valueAnimator.getAnimatedValue());
}
});
anim.setDuration(duration);
anim.start();
}
private static void animateHeightGingerbread(ViewGroup viewGroup,
boolean isExtending) {
// No animations for Gingerbread