aboutsummaryrefslogtreecommitdiff
path: root/app/src
diff options
context:
space:
mode:
authorDocile-Alligator <chineseperson5@gmail.com>2022-05-17 11:12:39 +0000
committerDocile-Alligator <chineseperson5@gmail.com>2022-05-17 11:12:39 +0000
commit3df7b761a29159368b4df32a28b1caed5006783a (patch)
treeb14ccf5f4bc3c6cf410c14268adb186f302ef0f4 /app/src
parent63ea1f54d0aa22521cf3937fa44e4814886b59dd (diff)
downloadinfinity-for-reddit-3df7b761a29159368b4df32a28b1caed5006783a.tar
infinity-for-reddit-3df7b761a29159368b4df32a28b1caed5006783a.tar.gz
infinity-for-reddit-3df7b761a29159368b4df32a28b1caed5006783a.tar.bz2
infinity-for-reddit-3df7b761a29159368b4df32a28b1caed5006783a.tar.lz
infinity-for-reddit-3df7b761a29159368b4df32a28b1caed5006783a.tar.xz
infinity-for-reddit-3df7b761a29159368b4df32a28b1caed5006783a.tar.zst
infinity-for-reddit-3df7b761a29159368b4df32a28b1caed5006783a.zip
Animate the software keyboard in ViewPrivateMessgesActivity.
Diffstat (limited to 'app/src')
-rw-r--r--app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewPrivateMessagesActivity.java59
-rw-r--r--app/src/main/res/layout/activity_view_private_messages.xml117
2 files changed, 113 insertions, 63 deletions
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewPrivateMessagesActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewPrivateMessagesActivity.java
index d8269c4b..b702bd5d 100644
--- a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewPrivateMessagesActivity.java
+++ b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewPrivateMessagesActivity.java
@@ -7,6 +7,8 @@ import android.os.Bundle;
import android.os.Handler;
import android.view.MenuItem;
import android.view.View;
+import android.view.Window;
+import android.view.WindowManager;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.LinearLayout;
@@ -14,6 +16,11 @@ import android.widget.LinearLayout;
import androidx.annotation.NonNull;
import androidx.appcompat.widget.Toolbar;
import androidx.coordinatorlayout.widget.CoordinatorLayout;
+import androidx.core.graphics.Insets;
+import androidx.core.view.ViewCompat;
+import androidx.core.view.WindowCompat;
+import androidx.core.view.WindowInsetsAnimationCompat;
+import androidx.core.view.WindowInsetsCompat;
import androidx.recyclerview.widget.RecyclerView;
import androidx.transition.AutoTransition;
import androidx.transition.TransitionManager;
@@ -25,6 +32,7 @@ import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
import java.util.ArrayList;
+import java.util.List;
import java.util.concurrent.Executor;
import javax.inject.Inject;
@@ -55,8 +63,6 @@ public class ViewPrivateMessagesActivity extends BaseActivity implements Activit
public static final String EXTRA_MESSAGE_POSITION = "EMP";
private static final String USER_AVATAR_STATE = "UAS";
private static final String PRIVATE_MESSAGES_STATE = "PMS";
- @BindView(R.id.linear_layout_view_private_messages_activity)
- LinearLayout mLinearLayout;
@BindView(R.id.coordinator_layout_view_private_messages_activity)
CoordinatorLayout mCoordinatorLayout;
@BindView(R.id.appbar_layout_view_private_messages_activity)
@@ -107,7 +113,7 @@ public class ViewPrivateMessagesActivity extends BaseActivity implements Activit
protected void onCreate(Bundle savedInstanceState) {
((Infinity) getApplication()).getAppComponent().inject(this);
- setImmersiveModeNotApplicable();
+ //setImmersiveModeNotApplicable();
super.onCreate(savedInstanceState);
@@ -123,6 +129,34 @@ public class ViewPrivateMessagesActivity extends BaseActivity implements Activit
addOnOffsetChangedListener(mAppBarLayout);
}
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
+ Window window = getWindow();
+
+ if (isChangeStatusBarIconColor()) {
+ addOnOffsetChangedListener(mAppBarLayout);
+ }
+
+ if (isImmersiveInterface()) {
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
+ mCoordinatorLayout.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE |
+ View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN |
+ View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION);
+ window.setDecorFitsSystemWindows(false);
+ WindowCompat.setDecorFitsSystemWindows(window, false);
+ } else {
+ window.setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
+ }
+ adjustToolbar(mToolbar);
+
+ int navBarHeight = getNavBarHeight();
+ if (navBarHeight > 0) {
+ LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) mEditTextLinearLayout.getLayoutParams();
+ params.bottomMargin += navBarHeight;
+ mEditTextLinearLayout.setLayoutParams(params);
+ }
+ }
+ }
+
setSupportActionBar(mToolbar);
setToolbarGoToTop(mToolbar);
@@ -142,6 +176,23 @@ public class ViewPrivateMessagesActivity extends BaseActivity implements Activit
} else {
EventBus.getDefault().post(new PassPrivateMessageIndexEvent(getIntent().getIntExtra(EXTRA_PRIVATE_MESSAGE_INDEX, -1)));
}
+
+ ViewCompat.setWindowInsetsAnimationCallback(
+ mCoordinatorLayout,
+ new WindowInsetsAnimationCompat.Callback(
+ WindowInsetsAnimationCompat.Callback.DISPATCH_MODE_CONTINUE_ON_SUBTREE
+ ) {
+ @NonNull
+ @Override
+ public WindowInsetsCompat onProgress(@NonNull WindowInsetsCompat insets, @NonNull List<WindowInsetsAnimationCompat> runningAnimations) {
+ Insets typesInset = insets.getInsets(WindowInsetsCompat.Type.ime());
+ Insets otherInset = insets.getInsets(WindowInsetsCompat.Type.systemBars());
+ Insets diff = Insets.max(Insets.NONE, Insets.subtract(typesInset, otherInset));
+
+ mCoordinatorLayout.setPadding(0, 0, 0, diff.bottom);
+ return insets;
+ }
+ });
}
private void bindView() {
@@ -306,7 +357,7 @@ public class ViewPrivateMessagesActivity extends BaseActivity implements Activit
@Override
protected void applyCustomTheme() {
- mLinearLayout.setBackgroundColor(mCustomThemeWrapper.getBackgroundColor());
+ mCoordinatorLayout.setBackgroundColor(mCustomThemeWrapper.getBackgroundColor());
applyAppBarLayoutAndCollapsingToolbarLayoutAndToolbarTheme(mAppBarLayout, null, mToolbar);
mDivider.setBackgroundColor(mCustomThemeWrapper.getDividerColor());
mEditText.setTextColor(mCustomThemeWrapper.getPrimaryTextColor());
diff --git a/app/src/main/res/layout/activity_view_private_messages.xml b/app/src/main/res/layout/activity_view_private_messages.xml
index c25eabc7..01c42f70 100644
--- a/app/src/main/res/layout/activity_view_private_messages.xml
+++ b/app/src/main/res/layout/activity_view_private_messages.xml
@@ -1,88 +1,87 @@
<?xml version="1.0" encoding="utf-8"?>
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
- android:id="@+id/linear_layout_view_private_messages_activity"
+ android:id="@+id/coordinator_layout_view_private_messages_activity"
android:layout_width="match_parent"
android:layout_height="match_parent"
- android:orientation="vertical">
+ android:layout_weight="1"
+ tools:context=".activities.ViewPrivateMessagesActivity">
- <androidx.coordinatorlayout.widget.CoordinatorLayout
+ <com.google.android.material.appbar.AppBarLayout
+ android:id="@+id/appbar_layout_view_private_messages_activity"
android:layout_width="match_parent"
- android:layout_height="0dp"
- android:layout_weight="1"
- android:id="@+id/coordinator_layout_view_private_messages_activity"
- tools:context=".activities.ViewPrivateMessagesActivity">
+ android:layout_height="wrap_content"
+ android:theme="@style/AppTheme.AppBarOverlay">
- <com.google.android.material.appbar.AppBarLayout
- android:id="@+id/appbar_layout_view_private_messages_activity"
+ <androidx.appcompat.widget.Toolbar
+ android:id="@+id/toolbar_view_private_messages_activity"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:theme="@style/AppTheme.AppBarOverlay">
-
- <androidx.appcompat.widget.Toolbar
- android:id="@+id/toolbar_view_private_messages_activity"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:minHeight="?attr/actionBarSize"
- app:popupTheme="@style/AppTheme.PopupOverlay"
- app:navigationIcon="?attr/homeAsUpIndicator" />
-
- </com.google.android.material.appbar.AppBarLayout>
-
- <androidx.recyclerview.widget.RecyclerView
- android:id="@+id/recycler_view_view_private_messages"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:clipToPadding="false"
- app:layout_behavior="@string/appbar_scrolling_view_behavior" />
+ android:minHeight="?attr/actionBarSize"
+ app:navigationIcon="?attr/homeAsUpIndicator"
+ app:popupTheme="@style/AppTheme.PopupOverlay" />
- </androidx.coordinatorlayout.widget.CoordinatorLayout>
+ </com.google.android.material.appbar.AppBarLayout>
<LinearLayout
- android:id="@+id/edit_text_wrapper_linear_layout_view_private_messages_activity"
android:layout_width="match_parent"
- android:layout_height="wrap_content"
+ android:layout_height="match_parent"
android:orientation="vertical"
- android:layout_gravity="bottom">
+ app:layout_behavior="@string/appbar_scrolling_view_behavior" >
- <View
- android:id="@+id/edit_text_divider_view_private_messages_activity"
+ <androidx.recyclerview.widget.RecyclerView
+ android:id="@+id/recycler_view_view_private_messages"
android:layout_width="match_parent"
- android:layout_height="1dp" />
+ android:layout_height="0dp"
+ android:layout_weight="1"
+ android:clipToPadding="false" />
<LinearLayout
+ android:id="@+id/edit_text_wrapper_linear_layout_view_private_messages_activity"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:orientation="horizontal">
+ android:orientation="vertical">
+
+ <View
+ android:id="@+id/edit_text_divider_view_private_messages_activity"
+ android:layout_width="match_parent"
+ android:layout_height="1dp" />
- <EditText
- android:id="@+id/edit_text_view_private_messages_activity"
- android:layout_width="0dp"
+ <LinearLayout
+ android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:layout_weight="1"
- android:padding="16dp"
- android:hint="@string/message"
- android:inputType="textMultiLine"
- android:textSize="?attr/font_default"
- android:background="#00000000"
- android:textColor="?attr/primaryTextColor"
- android:fontFamily="?attr/font_family"
- android:maxLines="3" />
+ android:orientation="horizontal">
+
+ <EditText
+ android:id="@+id/edit_text_view_private_messages_activity"
+ android:layout_width="0dp"
+ android:layout_height="wrap_content"
+ android:layout_weight="1"
+ android:background="#00000000"
+ android:fontFamily="?attr/font_family"
+ android:hint="@string/message"
+ android:inputType="textMultiLine"
+ android:maxLines="3"
+ android:padding="16dp"
+ android:textColor="?attr/primaryTextColor"
+ android:textSize="?attr/font_default" />
+
+ <ImageView
+ android:id="@+id/send_image_view_view_private_messages_activity"
+ android:layout_width="56dp"
+ android:layout_height="56dp"
+ android:layout_gravity="center_vertical"
+ android:background="?attr/selectableItemBackgroundBorderless"
+ android:clickable="true"
+ android:focusable="true"
+ android:scaleType="center"
+ android:src="@drawable/ic_send_black_24dp" />
- <ImageView
- android:id="@+id/send_image_view_view_private_messages_activity"
- android:layout_width="56dp"
- android:layout_height="56dp"
- android:layout_gravity="center_vertical"
- android:scaleType="center"
- android:src="@drawable/ic_send_black_24dp"
- android:clickable="true"
- android:focusable="true"
- android:background="?attr/selectableItemBackgroundBorderless" />
+ </LinearLayout>
</LinearLayout>
</LinearLayout>
-</LinearLayout> \ No newline at end of file
+</androidx.coordinatorlayout.widget.CoordinatorLayout> \ No newline at end of file