上下滑动动画效果 java代码!
public class ToBarActivityextends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_to_bar);
applyMotionWithAppBar();
}
private void applyMotionWithAppBar() {
((AppBarLayout)this.findViewById(R.id.appBarLayout)).addOnOffsetChangedListener((AppBarLayout.OnOffsetChangedListener)(new AppBarLayout.OnOffsetChangedListener() {
public final void onOffsetChanged(AppBarLayout $noName_0, int verticalOffset) {
float var10000 = (float)(-verticalOffset);
AppBarLayout var10001 = ToBarActivity.this.findViewById(R.id.appBarLayout);
Intrinsics.checkExpressionValueIsNotNull(var10001, "appBarLayout");
float seekPosition = var10000 / ((float)var10001.getTotalScrollRange() / (float)5 * (float)3);
MotionToolBar var4 = (MotionToolBar)ToBarActivity.this.findViewById(R.id.motionLayout);
Intrinsics.checkExpressionValueIsNotNull(var4, "motionLayout");
var4.setProgress((float)1 - seekPosition);
}
}));
}
}
自定VIEW
public class MotionToolBarextends MotionLayoutimplements AppBarLayout.OnOffsetChangedListener{
public MotionToolBar(Context context) {
super(context);
}
public MotionToolBar(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
protected void onAttachedToWindow() {
super.onAttachedToWindow();
ViewParent var10000 =this.getParent();
if (!(var10000instanceof AppBarLayout)) {
var10000 =null;
}
AppBarLayout var1 = (AppBarLayout)var10000;
if (var1 !=null) {
var1.addOnOffsetChangedListener((AppBarLayout.OnOffsetChangedListener)this);
}
}
@Override
public void onOffsetChanged(AppBarLayout appBarLayout, int verticalOffset) {
float var10000 = (float)(-verticalOffset);
Integer var10001 = appBarLayout !=null ? appBarLayout.getTotalScrollRange() :null;
if (var10001 ==null) {
Intrinsics.throwNpe();
}
float seekPosition = var10000 / ((float)var10001 / (float)5 * (float)3);
this.setProgress((float)1 - seekPosition);
}
}
//布局文件
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/content"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/white"
android:fitsSystemWindows="false">
android:id="@+id/appBarLayout"
android:layout_width="match_parent"
android:layout_height="260dp"
android:theme="@style/AppTheme.AppBarOverlay">
android:id="@+id/motionLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layoutDescription="@xml/motion_in_app_bar"
android:minHeight="52dp"
app:layout_scrollFlags="scroll|enterAlways|snap|exitUntilCollapsed"
app:motionDebug="NO_DEBUG">
android:id="@+id/background"
android:layout_width="match_parent"
android:layout_height="300dp"
android:background="@android:color/black"
android:scaleType="centerCrop"
android:src="@drawable/tree_scene" />
android:id="@+id/sun"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_sun" />
android:id="@+id/logo"
android:layout_width="40dp"
android:layout_height="40dp"
android:clickable="false"
android:src="@drawable/moosphon_logo" />
android:id="@+id/tipText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:fontFamily="serif-monospace"
android:text="Time flies fast"
android:textColor="@color/title_color"
android:textSize="18sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="android.support.design.widget.AppBarLayout$ScrollingViewBehavior"
>
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:lineSpacingExtra="8dp"
android:padding="12dp"
android:text="@string/long_text_en"
android:textColor="@color/content_text_color" />
//XML 文件
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:motion="http://schemas.android.com/tools">
android:id="@id/background"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:alpha="0"
android:translationX="0dp"
android:translationY="100dp"
motion:layout_constraintBottom_toBottomOf="parent"/>
android:id="@id/sun"
android:layout_width="45dp"
android:layout_height="45dp"
android:layout_marginStart="10dp"
android:layout_marginBottom="3dp"
android:alpha="0.48"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintBottom_toBottomOf="parent"/>
android:id="@id/logo"
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_marginStart="12dp"
android:layout_marginBottom="6dp"
android:alpha="1"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintBottom_toBottomOf="parent">
app:attributeName="clickable"
app:customBoolean="false"/>
android:id="@id/tipText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="20dp"
android:layout_marginBottom="12dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"/>
android:id="@+id/background"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleX="1.2"
android:scaleY="1.2"
android:alpha="1.0"
motion:layout_constraintBottom_toBottomOf="parent"/>
android:id="@id/sun"
android:layout_width="60dp"
android:layout_height="60dp"
android:alpha="1.0"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"/>
android:id="@id/logo"
android:layout_width="45dp"
android:layout_height="45dp"
android:alpha="0.2"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent">
app:attributeName="clickable"
app:customBoolean="true"/>
android:id="@+id/tipText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:scaleY="1.6"
android:scaleX="1.6"
android:alpha="1.0"
android:layout_marginStart="62dp"
android:layout_marginTop="12dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"/>
app:constraintSetStart="@id/start"
app:constraintSetEnd="@id/end"
app:duration="4000">
app:framePosition="22"
app:motionTarget="@id/sun"
app:keyPositionType="parentRelative"
app:percentY="0.48"/>
app:framePosition="70"
app:motionTarget="@id/sun"
app:keyPositionType="parentRelative"
app:percentY="0.08"/>
app:framePosition="22"
app:motionTarget="@id/logo"
app:keyPositionType="parentRelative"
app:percentY="0.48"/>
app:motionTarget="@id/logo"
app:framePosition="22">
app:attributeName="alpha"
app:customFloatValue="0"/>
app:motionTarget="@id/logo"
app:framePosition="0">
app:attributeName="alpha"
app:customFloatValue="1"/>
app:framePosition="60"
app:motionTarget="@id/tipText"
app:keyPositionType="parentRelative"
app:percentY="0.7"/>
app:motionTarget="@id/sun"
app:framePosition="0">
app:attributeName="colorFilter"
app:customColorValue="#F3F3B0"/>
app:motionTarget="@id/sun"
app:framePosition="100">
app:attributeName="colorFilter"
app:customColorValue="#EDC73A"/>
app:motionTarget="@id/tipText"
app:framePosition="10">
app:attributeName="textColor"
app:customColorValue="@android:color/white"/>
app:motionTarget="@id/tipText"
app:framePosition="90">
app:attributeName="textColor"
app:customColorValue="#161616"/>
//依赖
implementation'com.android.support.constraint:constraint-layout-solver:2.0.0-beta3' //必须
implementation'com.android.support:design:28.0.0' //可用可不用
implementation'de.hdodenhof:circleimageview:3.0.0'//可用可不用