activity just blinking after using shared element transition - java

Hi i am developing an app where i'm using shared element transition to animate enter and exit transitions on login and register activity animating one imageview and two textviews but my problem is that views are not animated at all instead when i click on register button the register activity blinks twice and no animation occurs and moreover the image in register activity losses its shape so i dont know where i'm going wrong becaues i have given same transition names in both the activites still the problem exists so i would appreciate some help.
Here is my styles.xml
<resources xmlns:tools="http://schemas.android.com/tools">
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">#color/colorPrimary</item>
<item name="colorPrimaryDark">#color/colorPrimaryDark</item>
<item name="colorAccent">#color/colorAccent</item>
<item name="android:windowEnableSplitTouch">false</item>
<item name="android:splitMotionEvents">false</item>
<!-- Transition -->
<item name="android:windowContentTransitions" tools:targetApi="21">true</item>
<item name="android:windowEnterTransition" tools:targetApi="21">#android:transition/fade
</item>
<item name="android:windowExitTransition" tools:targetApi="21">#android:transition/fade
</item>
<item name="android:windowActivityTransitions">true</item>
<item name="android:windowSharedElementEnterTransition" tools:targetApi="21">
#android:transition/move
</item>
<item name="android:windowSharedElementExitTransition" tools:targetApi="21">
#android:transition/move
</item>
</style>
</resources>
my login activity
public void gotoregister(View view) {
Intent intent = new Intent(LoginActivity.this,RegisterActivity.class);
Pair[] pairs = new Pair[3];
pairs[0] = new Pair<View,String>(text_login,getResources().getString(R.string.login_text_transition));
pairs[1] = new Pair<View,String>(login_page_curve,getResources().getString(R.string.transition_name_signup));
pairs[2] = new Pair<View,String>(register_text,getResources().getString(R.string.register_text_transition));
ActivityOptionsCompat optionsCompat = ActivityOptionsCompat.makeSceneTransitionAnimation
(LoginActivity.this,pairs);
startActivity(intent,optionsCompat.toBundle());
finish();
//overridePendingTransition(R.anim.bottom_up,R.anim.bottom_down);
}

This is working in my code.
styles.xml
<!-- Base application theme. -->
s<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">#color/colorPrimary</item>
<item name="colorPrimaryDark">#color/colorPrimaryDark</item>
<item name="colorAccent">#color/colorAccent</item>
<item name="android:windowDisablePreview">true</item>
<item name="android:windowEnableSplitTouch">false</item>
<item name="android:splitMotionEvents">false</item>
<item name="android:windowAnimationStyle">#style/CustomActivityAnimation</item>
</style>
<style name="AppTheme.NoActionBarMain">
<item name="windowActionBar">false</item>
<item name="android:windowDisablePreview">true</item>
<item name="windowNoTitle">true</item>
<item name="colorPrimary">#color/colorPrimary</item>
<item name="android:windowContentOverlay">#null</item>
<item name="android:windowEnableSplitTouch">false</item>
<item name="android:splitMotionEvents">false</item>
<item name="android:colorForeground">#color/foreground_material_light</item>
</style>
styles.xml(v21)
<style name="AppTheme.NoActionBar">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
<item name="android:windowDrawsSystemBarBackgrounds">true</item>
<item name="android:statusBarColor">#android:color/transparent</item>
<item name="android:windowEnableSplitTouch">false</item>
<item name="android:splitMotionEvents">false</item>
</style>

try this one.
View sharedView = splashLogo;
String transitionName = getString(R.string.splash_logo_animate);
if (Build.VERSION.SDK_INT >= 21) {
ActivityOptions options = ActivityOptions.makeSceneTransitionAnimation(SplashscreenActivity.this, sharedView, transitionName);
startActivity(i, options.toBundle());
finishAfterTransition();
}
else {
ActivityOptionsCompat options = ActivityOptionsCompat.makeSceneTransitionAnimation(SplashscreenActivity.this, sharedView, transitionName);
ActivityCompat.startActivity(getApplicationContext(), i, options.toBundle());
finish();
}

Have you tried using these in your style theme?
<item name="android:windowContentTransitions">true</item>
<item name="android:windowActivityTransitions">true</item>

I see you finish the current activity after start new one with transition. The enter and exit transition is lost if you finish that way.
Try to keep the LoginActivity to see if it works

Related

Android Navigation Fragment background is black without setting

First in my Android Stuidio, it look like this :
enter image description here
But in my Android Phone, it look like this:
enter image description here
When I turn to task List, it look like this:
enter image description here
Here are the themes.xml code:
themes.xml
<resources xmlns:tools="http://schemas.android.com/tools">
<style name="Theme.ShareChargingPile2.Fullscreen" parent="Theme.ShareChargingPile2">
<item name="android:actionBarStyle">
#style/Widget.Theme.ShareChargingPile2.ActionBar.Fullscreen
</item>
<item name="android:windowActionBarOverlay">true</item>
<item name="android:windowBackground">#null</item>
</style>
<style name="ThemeOverlay.ShareChargingPile2.FullscreenContainer" parent="">
<item name="fullscreenBackgroundColor">#color/light_blue_600</item>
<item name="fullscreenTextColor">#color/light_blue_A200</item>
</style>
</resources>
Question: Why the background of my application is black? And how to fix this?
Solved
In the themes.xml
<style name="Theme.ShareChargingPile2.Fullscreen" parent="Theme.ShareChargingPile2">
<item name="android:actionBarStyle">
#style/Widget.Theme.ShareChargingPile2.ActionBar.Fullscreen
</item>
<item name="android:windowActionBarOverlay">true</item>
<item name="android:windowBackground">#null</item>
</style>
the windowBackground is #null.
I change to #color/white. The problem solved
<style name="Theme.ShareChargingPile2.Fullscreen" parent="Theme.ShareChargingPile2">
<item name="android:actionBarStyle">
#style/Widget.Theme.ShareChargingPile2.ActionBar.Fullscreen
</item>
<item name="android:windowActionBarOverlay">true</item>
<item name="android:windowBackground">#color/white</item>
</style>
your phone dark mode is on or you can change in res->values->themes->themes.xml(night)change black to white or something else color.

Android use notch (status bar) area in fullscreen

I am currently making a gallery app and I want to use the full screen for displaying my images. For this I would have to use the Notch area on my Oneplus 6T as well, which I cannot get to work. Ever source I've looked at said to use windowLayoutInDisplayCutoutMode which doesn't seem to work for me and the Notch area is still blacked out and unused by the app. I have totally run out of ideas of how to fix this and cannot find any more results on the internet.
App Theme:
<resources xmlns:tools="http://schemas.android.com/tools">
<!-- Base application theme. -->
<style name="Theme.Raspjannis" parent="Theme.MaterialComponents.DayNight.DarkActionBar">
<!-- Primary brand color. -->
<item name="colorPrimary">#color/pastelBlue</item>
<item name="colorPrimaryVariant">#color/iconBlue</item>
<item name="colorOnPrimary">#color/black</item>
<item name="android:textColor">#color/black</item>
<item name="android:textColorPrimary">#color/black</item>
<item name="android:textColorSecondary">#color/iconBlue</item>
<!-- Secondary brand color. -->
<item name="colorSecondary">#color/iconBlue</item>
<item name="colorSecondaryVariant">#color/pastelBlue</item>
<item name="colorOnSecondary">#color/white</item>
<!-- Status bar color. -->
<item name="android:statusBarColor">?attr/colorPrimary</item>
<!-- Customize your theme here. -->
<!-- Backgrounds Theme -->
<item name="backgroundColor">#color/pastelBlue</item>
<item name="cardBackgroundColor">#color/white</item>
<item name="cardForegroundColor">#color/white</item>
<item name="editTextBackground">#color/bright</item>
<item name="android:windowLayoutInDisplayCutoutMode" tools:targetApi="p">
shortEdges <!-- default, shortEdges, or never -->
</item>
</style>
<style name="Theme.Raspjannis.NoActionBar.splashScreenTheme" parent="Theme.Raspjannis.NoActionBar">
<item name="android:windowBackground">#drawable/splash_screen</item>
</style>
<style name="ActionBarTheme">
</style>
<style name="Theme.Raspjannis.NoActionBar" parent="Theme.Raspjannis">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
</style>
<style name="Theme.Raspjannis.NoStatusBar">
<item name="android:windowLayoutInDisplayCutoutMode" tools:targetApi="p">
shortEdges <!-- default, shortEdges, or never -->
</item>
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
<item name="android:windowFullscreen">true</item>
<item name="android:windowContentOverlay">#null</item>
</style>
<style name="Theme.Raspjannis.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" />
<style name="Theme.Raspjannis.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" />
<!-- This style is where you define the tint color of your overflow menu button -->
<style name="actionOverflowButtonStyle" parent="#style/Widget.AppCompat.ActionButton.Overflow">
<item name="android:tint">#color/dark</item>
</style>
<style name="menuItem" parent="Widget.AppCompat.TextView.SpinnerItem">
<item name="android:textColor">#color/black</item>
<item name="android:textColorPrimary">#color/black</item>
</style>
<style name="icons" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="android:itemBackground">#color/white</item>
<item name="android:textColor">#color/dark</item>
<item name="android:tint">#color/dark</item>
</style>
And here is the code that sets the theme and fullscreen:
public static void hideSystemUI(Activity activity) {
activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
activity.setTheme(R.style.Theme_Raspjannis_NoStatusBar);
}
public static void showSystemUI(Activity activity) {
activity.setTheme(R.style.Theme_Raspjannis);
activity.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
}

mediaRouteTheme not found

When I try to create a style as indicated by:
https://developers.google.com/cast/docs/android_sender_advanced#customize_cast_button like this:
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="colorPrimary">#7788FF</item>
<item name="colorPrimaryDark">#7700FF</item>
<item name="mediaRouteTheme">#style/CustomMediaRouterTheme</item>
</style>
<style name="CustomMediaRouterTheme" parent="Theme.MediaRouter">
<item name="mediaRouteButtonStyle">#style/CustomMediaRouteButtonStyle</item>
</style>
<style name="CustomMediaRouteButtonStyle" parent="Widget.MediaRouter.Light.MediaRouteButton">
<item name="buttonTint">#CCCC00</item>
</style>
I get the following error:
Error:error: style attribute 'attr/mediaRouteTheme (aka com.*:attr/mediaRouteTheme)' not found.
What am I doing wrong?
I Used this dependency in build.gradle compile 'com.android.support:mediarouter-v7:25.3.1'
and in style.xml
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">#color/colorPrimary</item>
<item name="colorPrimaryDark">#color/colorPrimaryDark</item>
<item name="colorAccent">#color/colorAccent</item>
<item name="mediaRouteTheme">#style/CustomMediaRouterTheme</item>
</style>
<style name="CustomMediaRouterTheme" parent="Theme.MediaRouter">
<item name="mediaRouteButtonStyle">#style/CustomMediaRouteButtonStyle</item>
</style>
<style name="CustomMediaRouteButtonStyle" parent="Widget.MediaRouter.Light.MediaRouteButton">
<item name="buttonTint">#CCCC00</item>
</style>
its working fine, not getting any error. try with this gradle dependency.
From support library v26.0.0, the "buttonTint" is changed to "mediaRouteButtonTint".
Replacing "mediaRouteButtonTint" with "buttonTint" would fix the issue.
Found the following solution from: https://smartapps.egeniq.com/style-mediaroutebutton-change-chromecast-icon-color-ecc98d72abe4
Context castContext = new ContextThemeWrapper(this.getBaseContext(), android.support.v7.mediarouter.R.style.Theme_MediaRouter);
Drawable drawable = null;
TypedArray a = castContext.obtainStyledAttributes(null,
android.support.v7.mediarouter.R.styleable.MediaRouteButton, android.support.v7.mediarouter.R.attr.mediaRouteButtonStyle, 0);
drawable = a.getDrawable(
android.support.v7.mediarouter.R.styleable.MediaRouteButton_externalRouteEnabledDrawable);
a.recycle();
MediaRouteButton mrb = (MediaRouteButton)findViewById(R.id.media_route_menu_item);
DrawableCompat.setTint(drawable, 0xFFCCCCCC);
mrb.setRemoteIndicatorDrawable(drawable);
CastButtonFactory.setUpMediaRouteButton(this, mrb);

AlertDialog Buttons Reverse Order With alertDialogStyle Item

I'm creating a custom theme for a standard alert dialog box, and after I add the alertDialogStyle item, the OK/Cancel buttons on the alert box reverse in order. I expect Cancel first, then OK. It works without the alertDialogStyle item, but as soon as I add the item, the buttons show OK and Cancel.
<!-- create style for Simple Alert Dialog Box -->
<style name="simpleDialogBoxStyle" parent="AppDialogTheme">
<item name="android:windowBackground">#drawable/dialog_actvity_border</item>
<item name="colorAccent">#color/standard_text_color_BLACK</item>
<item name="android:textAppearanceMedium">#style/AlertDialogBodyAttributes</item>
<item name="android:textAppearanceLarge">#style/AlertDialogTitleAttributes</item>
<item name="android:textAppearanceButton">#style/AlertDialogButtonAttributes</item>
<item name="android:buttonBarButtonStyle">#style/AlertDialogButtonAttributes</item>
<item name="android:alertDialogStyle">#style/AlertDialogColors</item>
</style>
<style name="AlertDialogColors">
<item name="android:bottomBright">#color/custom_theme_color</item>
<item name="android:bottomMedium">#color/custom_theme_color</item>
<item name="android:centerBright">#color/custom_theme_color</item>
<item name="android:centerDark">#color/custom_theme_color</item>
<item name="android:centerMedium">#color/custom_theme_color</item>
<item name="android:fullBright">#color/custom_theme_color</item>
<item name="android:fullDark">#color/custom_theme_color</item>
<item name="android:topBright">#color/custom_theme_color</item>
<item name="android:topDark">#color/custom_theme_color</item>
</style>
<style name="AlertDialogBodyAttributes">
<item name="android:textSize">#dimen/default_text_size_medium</item>
<item name="android:textColor">#color/standard_text_color_BLACK</item>
</style>
<style name="AlertDialogTitleAttributes">
<item name="android:textSize">#dimen/default_text_size_medium</item>
<item name="android:textStyle">bold</item>
<item name="android:textColor">#color/standard_text_color_BLACK</item>
</style>
<style name="AlertDialogButtonAttributes" >
<item name="android:textSize">#dimen/default_text_size</item>
<item name="android:textAllCaps">true</item>
<item name="android:background">#color/transparent_color</item>
<item name="android:textStyle">bold</item>
</style>
Here is the method to show the Alert box with OK/Cancel:
public static void ShowOKCancelMessageBox(Context context, int xmlRLayout, String msg, String title, DialogInterface.OnClickListener listener) {
AlertDialog.Builder dlgAlert = new AlertDialog.Builder(context, xmlRLayout);
dlgAlert.setMessage(msg);
dlgAlert.setTitle(title);
dlgAlert.setPositiveButton("OK", listener);
dlgAlert.setNegativeButton("Cancel", listener);
dlgAlert.setCancelable(false);
dlgAlert.create().show();
}

How to hide the action-bar in style xml themes while loading

I have a custom theme that I displayed for my application. However, in my main activity class I set a custom font for the action bar font.
// Make sure you find out why it appears after a whole 1 second after the app appears
SpannableString s = new SpannableString("GetDisciplined");
s.setSpan(new TypefaceSpan(this, "roboto-light.ttf"), 0, s.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
// Update the action bar title with the TypefaceSpan instance
ActionBar actionBar = getActionBar();
actionBar.setTitle(s);
// set the action bar in this activity as the home
actionBar.setHomeButtonEnabled(true);
Upon launching the app, I want to immediately show the custom font.
I did some research and most solutions didn't work, but I am trying to now use launch a "splash screen" application theme without an action bar and then set the custom_theme with an action in my main activity class.
Kind of like this.
https://stackoverflow.com/a/12724687/3120659
But I am unsure how to do that modify my current style theme to do that.
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="Theme.Light_appalled" parent="#style/Theme.AppCompat.Light.DarkActionBar">
<item name="actionBarItemBackground">#drawable/selectable_background_light_appalled</item>
<item name="popupMenuStyle">#style/PopupMenu.Light_appalled</item>
<item name="dropDownListViewStyle">#style/DropDownListView.Light_appalled</item>
<item name="actionBarTabStyle">#style/ActionBarTabStyle.Light_appalled</item>
<item name="actionDropDownStyle">#style/DropDownNav.Light_appalled</item>
<item name="actionBarStyle">#style/ActionBar.Solid.Light_appalled</item>
<item name="actionModeBackground">#drawable/cab_background_top_light_appalled</item>
<item name="actionModeSplitBackground">#drawable/cab_background_bottom_light_appalled</item>
<item name="actionModeCloseButtonStyle">#style/ActionButton.CloseMode.Light_appalled</item>
<!-- Light.DarkActionBar specific -->
<item name="actionBarWidgetTheme">#style/Theme.Light_appalled.Widget</item>
</style>
<style name="ActionBar.Solid.Light_appalled" parent="#style/Widget.AppCompat.Light.ActionBar.Solid.Inverse">
<item name="background">#drawable/ab_solid_light_appalled</item>
<item name="backgroundStacked">#drawable/ab_stacked_solid_light_appalled</item>
<item name="backgroundSplit">#drawable/ab_bottom_solid_light_appalled</item>
<item name="progressBarStyle">#style/ProgressBar.Light_appalled</item>
</style>
<style name="ActionBar.Transparent.Light_appalled" parent="#style/Widget.AppCompat.ActionBar">
<item name="background">#drawable/ab_transparent_light_appalled</item>
<item name="progressBarStyle">#style/ProgressBar.Light_appalled</item>
</style>
<style name="PopupMenu.Light_appalled" parent="#style/Widget.AppCompat.PopupMenu">
<item name="android:popupBackground">#drawable/menu_dropdown_panel_light_appalled</item>
</style>
<style name="DropDownListView.Light_appalled" parent="#style/Widget.AppCompat.ListView.DropDown">
<item name="android:listSelector">#drawable/selectable_background_light_appalled</item>
</style>
<style name="ActionBarTabStyle.Light_appalled" parent="#style/Widget.AppCompat.ActionBar.TabView">
<item name="android:background">#drawable/tab_indicator_ab_light_appalled</item>
</style>
<style name="DropDownNav.Light_appalled" parent="#style/Widget.AppCompat.Spinner.DropDown.ActionBar">
<item name="android:background">#drawable/spinner_background_ab_light_appalled</item>
<item name="android:popupBackground">#drawable/menu_dropdown_panel_light_appalled</item>
<item name="android:dropDownSelector">#drawable/selectable_background_light_appalled</item>
</style>
<style name="ProgressBar.Light_appalled" parent="#style/Widget.AppCompat.ProgressBar.Horizontal">
<item name="android:progressDrawable">#drawable/progress_horizontal_light_appalled</item>
</style>
<style name="ActionButton.CloseMode.Light_appalled" parent="#style/Widget.AppCompat.ActionButton.CloseMode">
<item name="android:background">#drawable/btn_cab_done_light_appalled</item>
</style>
<!-- this style is only referenced in a Light.DarkActionBar based theme -->
<style name="Theme.Light_appalled.Widget" parent="#style/Theme.AppCompat">
<item name="popupMenuStyle">#style/PopupMenu.Light_appalled</item>
<item name="dropDownListViewStyle">#style/DropDownListView.Light_appalled</item>
</style>
</resources>
Unfortunately
<item name="android:windowNoTitle">true</item>
did not work, so I am trying to figure out how to do it.

Categories

Resources