我正在尝试使用ViewPager在Android上模拟iPhone X导航。当用户释放底部的栏时,viewpager的可见性设置为View.GONE
,它会像动画一样显示丑陋的下拉,如视频https://youtu.be/k2EXKFulfzU中所示。
我尝试通过直接更改viewpager的维度然后将其更改为GONE的可见性来删除动画,但它没有帮助。谢谢你的高级:)
FrameLayout ll = mLayout.findViewById(R.id.mainLL);
ll.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, final MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
bar.animate().alpha(0.0f);
viewPager.setVisibility(View.VISIBLE);
layoutParams.height = old_y;
viewPager.setLayoutParams(layoutParams);
break;
case MotionEvent.ACTION_UP:
Animation a = new Animation() {
@Override
protected void applyTransformation(float factor, Transformation t) {
float factorX = (float)scaleX + factor;
int currentPos = viewPager.getCurrentItem();
if (currentPos != 0) {
adapter.getItem(currentPos - 1).setScaleX(Math.min(factorX, 1));
adapter.getItem(currentPos - 1).setScaleY(Math.min(factorX, 1));
}
adapter.getItem(currentPos).setScaleX(Math.min(factorX, 1));
adapter.getItem(currentPos).setScaleY(Math.min(factorX, 1));
adapter.getItem(currentPos + 1).setScaleX(Math.min(factorX, 1));
adapter.getItem(currentPos + 1).setScaleY(Math.min(factorX, 1));
if(adapter.getItem(currentPos).getScaleX() > 0.1) {
if(factor == 1){
viewPager.setVisibility(View.GONE);
}
}
}
};
bar.animate().alpha(1.0f);
viewPager.setVisibility(View.GONE);
a.setDuration(zoomInDuration);
viewPager.startAnimation(a);
break;
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/navigationLayout"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:animateLayoutChanges="false"
android:orientation="vertical">
<com.thanoscorp.uigestures.ViewPager.ViewPager
android:id="@+id/appViewpager"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="top"
android:visibility="gone" />
<LinearLayout
android:id="@+id/barLayout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:orientation="vertical">
<ImageView
android:id="@+id/overlayBar"
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_gravity="top"
android:paddingLeft="100dp"
android:paddingRight="100dp"
android:src="@mipmap/bar"
android:tint="#FF0000" />
</LinearLayout>
</FrameLayout>
&#13;
答案 0 :(得分:0)
我无法摆脱动画,相反,我创建了另一个布局,并使用wm.addView(vpLayout, lp);
将其添加到窗口管理器,并使用wm.removeView(vpLayout);
如果您想知道vpLayout
是什么,我已将ViewPager分成另一个布局文件,并将其扩展为FrameLayout
,其名称为vpLayout
。花了一段时间才值得,但它产生了一个新问题。希望我也能解决它。谢谢:))