Skip to content

Commit 3303fb0

Browse files
committed
Support Android 15 on chat screen
1 parent 5a6162d commit 3303fb0

File tree

5 files changed

+129
-38
lines changed

5 files changed

+129
-38
lines changed

app/src/main/java/org/thunderdog/challegram/component/chat/ChatBottomBarView.java

Lines changed: 34 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@
4444
import me.vkryl.android.ViewUtils;
4545
import me.vkryl.android.animator.BoolAnimator;
4646
import me.vkryl.core.ColorUtils;
47+
import me.vkryl.core.MathUtils;
4748

4849
public class ChatBottomBarView extends BaseView {
4950
private Drawable drawable;
@@ -100,16 +101,32 @@ private int calculateRadius () {
100101
return (int) (Screen.dp(48f) / 2f * collapseFactor);
101102
}
102103

104+
private final RectF fromRect = new RectF(), toRect = new RectF();
105+
103106
private RectF buildRectF () {
104-
int fromWidth = getMeasuredWidth() - getPaddingLeft() - getPaddingRight();
105-
int fromHeight = getMeasuredHeight() - getPaddingTop() - getPaddingBottom();
106-
int cx = getPaddingLeft() + fromWidth / 2;
107-
int cy = getPaddingTop() + fromHeight / 2;
107+
int fromWidth = getMeasuredWidth();
108+
int fromHeight = getMeasuredHeight();
108109
int toSize = Screen.dp(48f);
109-
int width = fromWidth + (int) ((float) (toSize - fromWidth) * collapseFactor);
110-
int height = fromHeight + (int) ((float) (toSize - fromHeight) * collapseFactor);
110+
111111
RectF rectF = Paints.getRectF();
112-
rectF.set(cx - width / 2, cy - height / 2, cx + width / 2, cy + height / 2);
112+
113+
float centerX = fromWidth / 2f;
114+
float centerY = getPaddingTop() + (getMeasuredHeight() - getPaddingTop() - getPaddingBottom()) / 2f;
115+
116+
fromRect.set(0, 0, fromWidth, fromHeight);
117+
toRect.set(
118+
centerX - toSize / 2f,
119+
centerY - toSize / 2f,
120+
centerX + toSize / 2f,
121+
centerY + toSize / 2f
122+
);
123+
124+
rectF.set(
125+
MathUtils.fromTo(fromRect.left, toRect.left, collapseFactor),
126+
MathUtils.fromTo(fromRect.top, toRect.top, collapseFactor),
127+
MathUtils.fromTo(fromRect.right, toRect.right, collapseFactor),
128+
MathUtils.fromTo(fromRect.bottom, toRect.bottom, collapseFactor)
129+
);
113130
return rectF;
114131
}
115132

@@ -149,16 +166,19 @@ public void layout (int width) {
149166

150167
private static final float SCALE = .8f;
151168

152-
public void draw (Canvas c, View view, float collapseFactor, float factor) {
153-
int cx = view.getPaddingLeft() + (view.getMeasuredWidth() - view.getPaddingRight() - view.getPaddingLeft()) / 2;
154-
int cy = view.getPaddingTop() + (view.getMeasuredHeight() - view.getPaddingBottom() - view.getPaddingTop()) / 2;
169+
public void draw (Canvas c, View view, float collapseFactor, float factor, float rectX, float rectY) {
170+
float fromCx = view.getPaddingLeft() + (view.getMeasuredWidth() - view.getPaddingRight() - view.getPaddingLeft()) / 2f;
171+
float fromCy = view.getPaddingTop() + (view.getMeasuredHeight() - view.getPaddingBottom() - view.getPaddingTop()) / 2f;
172+
173+
float cx = fromCx + (rectX - fromCx) * collapseFactor;
174+
float cy = fromCy + (rectY - fromCy) * collapseFactor;
155175

156176
if (prevState != null) {
157177
c.save();
158178
float displayFactor = 1f - this.factor;
159179
float scale = SCALE + (1f - SCALE) * displayFactor;
160180
c.scale(scale, scale, cx, cy);
161-
prevState.draw(c, view, collapseFactor, displayFactor);
181+
prevState.draw(c, view, collapseFactor, displayFactor, cx, cy);
162182
c.restore();
163183
}
164184
factor *= this.factor;
@@ -172,11 +192,11 @@ public void draw (Canvas c, View view, float collapseFactor, float factor) {
172192
saveCount = -1;
173193
}
174194
if (drawingText != null && collapseFactor < 1f) {
175-
drawingText.draw(c, cx - drawingText.getWidth() / 2, cy - drawingText.getHeight() / 2, null, factor * (1f - collapseFactor));
195+
drawingText.draw(c, (int) (cx - drawingText.getWidth() / 2f), (int) (cy - drawingText.getHeight() / 2f), null, factor * (1f - collapseFactor));
176196
}
177197
if (collapseFactor > 0f && drawable != null) {
178198
Paint paint = PorterDuffPaint.get(ColorId.circleButtonChatIcon, factor * collapseFactor);
179-
Drawables.draw(c, drawable, cx - drawable.getMinimumWidth() / 2, cy - drawable.getMinimumHeight() / 2, paint);
199+
Drawables.drawCentered(c, drawable, cx, cy, paint);
180200
}
181201
if (needScale) {
182202
Views.restore(c, saveCount);
@@ -247,7 +267,7 @@ protected void onDraw (Canvas c) {
247267
RectF rectF = buildRectF();
248268
c.save();
249269
c.clipRect(rectF.left, rectF.top, rectF.right, rectF.bottom);
250-
state.draw(c, this, collapseFactor, 1f);
270+
state.draw(c, this, collapseFactor, 1f, rectF.centerX(), rectF.centerY());
251271
c.restore();
252272
}
253273
}

app/src/main/java/org/thunderdog/challegram/ui/MainController.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -200,7 +200,7 @@ protected void onBottomInsetChanged (int extraBottomInset, int extraBottomInsetW
200200
}
201201
if (bottomBar != null) {
202202
Views.setBottomMargin(bottomBar, extraBottomInsetWithoutIme);
203-
bottomBarSpace.setLayoutHeight(extraBottomInsetWithoutIme);
203+
bottomBarSpace.setLayoutHeight(extraBottomInsetWithoutIme, true);
204204
}
205205
checkMargins();
206206
}
@@ -2734,7 +2734,7 @@ private void checkTabs () {
27342734
bottomBarSpace = new FillingSpace(context);
27352735
bottomBarSpace.setThemedBackground(ColorId.headerLightBackground, this);
27362736
pagerWrap.addView(bottomBarSpace, FrameLayoutFix.newParams(ViewGroup.LayoutParams.MATCH_PARENT, 0, Gravity.BOTTOM));
2737-
bottomBarSpace.setLayoutHeight(extraBottomInsetWithoutIme);
2737+
bottomBarSpace.setLayoutHeight(extraBottomInsetWithoutIme, true);
27382738

27392739
if (Config.CHAT_FOLDERS_HIDE_BOTTOM_BAR_ON_SCROLL) {
27402740
isBottomBarVisible.setValue(true, false);

0 commit comments

Comments
 (0)