diff options
author | Docile-Alligator <chineseperson5@gmail.com> | 2022-05-17 11:12:39 +0000 |
---|---|---|
committer | Docile-Alligator <chineseperson5@gmail.com> | 2022-05-17 11:12:39 +0000 |
commit | 3df7b761a29159368b4df32a28b1caed5006783a (patch) | |
tree | b14ccf5f4bc3c6cf410c14268adb186f302ef0f4 | |
parent | 63ea1f54d0aa22521cf3937fa44e4814886b59dd (diff) | |
download | infinity-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 '')
-rw-r--r-- | app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewPrivateMessagesActivity.java | 59 | ||||
-rw-r--r-- | app/src/main/res/layout/activity_view_private_messages.xml | 117 |
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 |