Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/193.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我想在下面的链接视频中创建动画_Java_Android - Fatal编程技术网

Java 我想在下面的链接视频中创建动画

Java 我想在下面的链接视频中创建动画,java,android,Java,Android,//我使用recyler视图来实现此目的,如下所示。但我现在很固执,不知道如何走得更远。我想创建像视频中那样的底部堆栈动画 public class NewShopFragment extends Fragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceSt

//我使用recyler视图来实现此目的,如下所示。但我现在很固执,不知道如何走得更远。我想创建像视频中那样的底部堆栈动画

public class NewShopFragment extends Fragment {
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        View view = inflater.inflate(R.layout.fragment_new_shop, container, false);
        RecyclerView recyclerView = (RecyclerView) view.findViewById(R.id.recycler_view);
        recyclerView.setHasFixedSize(true);
        recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()) {
            @Override
            public void smoothScrollToPosition(RecyclerView recyclerView, RecyclerView.State state, int position) {
                // A good idea would be to create this instance in some initialization method, and just set the target position in this method.
                LinearSmoothScroller smoothScroller = new LinearSmoothScroller(getContext()) {
                    @Override
                    public PointF computeScrollVectorForPosition(int targetPosition) {
                        //int yDelta = calculateCurrentDistanceToPosition(targetPosition);
                        return new PointF(0, 200);
                    }

                    // This is the important method. This code will return the amount of time it takes to scroll 1 pixel.
                    // This code will request X milliseconds for every Y DP units.
                    @Override
                    protected float calculateSpeedPerPixel(DisplayMetrics displayMetrics) {
                        return 7 / TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 7, displayMetrics);
                    }

                };
                smoothScroller.setTargetPosition(position);

                startSmoothScroll(smoothScroller);
            }
        });
        final NewShopFragmentAdapter recyclerViewAdapter = new NewShopFragmentAdapter(getActivity(), returnViewHeight());
        recyclerView.setAdapter(recyclerViewAdapter);
        recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
            @Override
            public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
                super.onScrollStateChanged(recyclerView, newState);
            }

            @Override
            public void onScrolled(final RecyclerView recyclerView, int dx, int dy) {
                super.onScrolled(recyclerView, dx, dy);
                final int positionView = ((LinearLayoutManager) recyclerView.getLayoutManager()).findLastVisibleItemPosition();
                if (dy > 0) {
                    if (positionView >= 3) {
                        final View view = recyclerView.getChildAt(3);
                        if (view != null && recyclerView.getChildAdapterPosition(view) == positionView) {
                            TranslateAnimation translateAnimation = new TranslateAnimation(0, 0, 400, 0);
                            translateAnimation.setAnimationListener(new Animation.AnimationListener() {
                                @Override
                                public void onAnimationStart(Animation animation) {
                                    recyclerView.smoothScrollToPosition(positionView);
                                }

                                @Override
                                public void onAnimationEnd(Animation animation) {
                                    view.clearAnimation();
                                }

                                @Override
                                public void onAnimationRepeat(Animation animation) {

                                }
                            });
                            translateAnimation.setDuration(150);
                            view.setAnimation(translateAnimation);

                        }
                    }
                }
            }
        });
        return view;
    }

    private int returnViewHeight() {
        //get status bar height and toolbar height and tab height android
        int statusBarHeight = 0;
        int resourceId = getResources().getIdentifier("status_bar_height", "dimen", "android");
        if (resourceId > 0) {
            statusBarHeight = getResources().getDimensionPixelSize(resourceId);
        }
        @SuppressWarnings("ConstantConditions") int toolbarHeight = ((AppCompatActivity) getActivity()).getSupportActionBar().getHeight();
        return statusBarHeight + toolbarHeight + dpToPx(48);
    }

    public int dpToPx(int dp) {
        DisplayMetrics displayMetrics = getContext().getResources().getDisplayMetrics();
        return Math.round(dp * (displayMetrics.xdpi / DisplayMetrics.DENSITY_DEFAULT));
    }
}
//视频的链接是

您试图解决的问题是什么?我可以用上面的代码获得底部平移动画,但我不知道如何显示底部堆栈动画