Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(android): collapseToolbar layout #13711

Merged
merged 15 commits into from
Feb 6, 2023
52 changes: 52 additions & 0 deletions android/modules/ui/res/layout/titanium_ui_collapse_toolbar.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="false">

<androidx.core.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior">

<org.appcelerator.titanium.view.TiCompositeLayout
android:id="@+id/collapseContent"
android:layout_width="match_parent"
android:layout_height="match_parent">
<!-- main content -->
</org.appcelerator.titanium.view.TiCompositeLayout>

</androidx.core.widget.NestedScrollView>

<com.google.android.material.appbar.AppBarLayout
android:id="@+id/appBarLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<!-- toolbar -->

<com.google.android.material.appbar.CollapsingToolbarLayout
android:id="@+id/collapseToolbarLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_scrollFlags="scroll|snap|exitUntilCollapsed">

<ImageView
android:id="@+id/collapseImageView"
android:layout_width="match_parent"
android:layout_height="250dp"
android:scaleType="centerCrop"
android:visibility="invisible"
app:layout_collapseMode="parallax" />

<com.google.android.material.appbar.MaterialToolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
app:layout_collapseMode="pin" />

</com.google.android.material.appbar.CollapsingToolbarLayout>

</com.google.android.material.appbar.AppBarLayout>

</androidx.coordinatorlayout.widget.CoordinatorLayout>
Original file line number Diff line number Diff line change
Expand Up @@ -232,6 +232,21 @@ public class AndroidModule extends KrollModule
@Kroll.constant
public static final int OVER_SCROLL_NEVER = 2; //android.view.View.OVER_SCROLL_NEVER;

@Kroll.constant
public static final int SCROLL_FLAG_ENTER_ALWAYS = 4;
@Kroll.constant
public static final int SCROLL_FLAG_ENTER_ALWAYS_COLLAPSED = 8;
@Kroll.constant
public static final int SCROLL_FLAG_EXIT_UNTIL_COLLAPSED = 2;
@Kroll.constant
public static final int SCROLL_FLAG_NO_SCROLL = 0;
@Kroll.constant
public static final int SCROLL_FLAG_SCROLL = 1;
@Kroll.constant
public static final int SCROLL_FLAG_SNAP = 16;
@Kroll.constant
public static final int SCROLL_FLAG_SNAP_MARGINS = 32;

public AndroidModule()
{
super();
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,103 @@
/**
* TiDev Titanium Mobile
* Copyright TiDev, Inc. 04/07/2022-Present
* Licensed under the terms of the Apache Public License
* Please see the LICENSE included with this distribution for details.
*/
package ti.modules.titanium.ui.android;

import android.app.Activity;

import org.appcelerator.kroll.KrollFunction;
import org.appcelerator.kroll.annotations.Kroll;
import org.appcelerator.titanium.TiApplication;
import org.appcelerator.titanium.proxy.TiViewProxy;
import org.appcelerator.titanium.util.TiConvert;
import org.appcelerator.titanium.view.TiDrawableReference;
import org.appcelerator.titanium.view.TiUIView;

import ti.modules.titanium.ui.widget.TiUICollapseToolbar;

@Kroll.proxy(creatableInModule = AndroidModule.class)
public class CollapseToolbarProxy extends TiViewProxy
{
private static final String TAG = "CollapseToolbarProxy";
private TiUICollapseToolbar collapseToolbar;

@Override
public TiUIView createView(Activity activity)
{
collapseToolbar = new TiUICollapseToolbar(this);
collapseToolbar.getLayoutParams().autoFillsHeight = true;
collapseToolbar.getLayoutParams().autoFillsWidth = true;
return collapseToolbar;
}

@Kroll.setProperty
public void setImage(Object obj)
{
collapseToolbar.setImage(TiDrawableReference.fromObject(this, obj).getBitmap(false));
}

@Kroll.setProperty
public void setTitle(String text)
{
collapseToolbar.setTitle(text);
}

@Kroll.setProperty
public void setContentView(Object obj)
{
if (obj instanceof TiViewProxy) {
collapseToolbar.setContentView((TiViewProxy) obj);
}
}

@Kroll.setProperty
public void setBarColor(String value)
{
collapseToolbar.setBarColor(TiConvert.toColor(value, TiApplication.getAppCurrentActivity()));
}

@Kroll.setProperty
public void setContentScrimColor(String value)
{
collapseToolbar.setContentScrimColor(TiConvert.toColor(value, TiApplication.getAppCurrentActivity()));
}

@Kroll.setProperty
public void setDisplayHomeAsUp(boolean value)
{
collapseToolbar.setDisplayHomeAsUp(value);
}

@Kroll.setProperty
public void setImageHeight(int value)
{
collapseToolbar.setImageHeight(value);
}

@Kroll.setProperty
public void setonHomeIconItemSelected(KrollFunction value)
{
collapseToolbar.setonHomeIconItemSelected(value);
}

@Kroll.setProperty
public void setFlags(int value)
{
collapseToolbar.setFlags(value);
}

@Kroll.setProperty
public void setColor(String value)
{
collapseToolbar.setColor(TiConvert.toColor(value, TiApplication.getAppCurrentActivity()));
}

@Kroll.setProperty
public void setNavigationIconColor(String value)
{
collapseToolbar.setNavigationIconColor(TiConvert.toColor(value, TiApplication.getAppCurrentActivity()));
}
}
Loading