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

时间:2016-04-01 05:51:21

标签: java android

//我为此目的使用了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));
    }
}

//视频的链接是 https://drive.google.com/open?id=0B8zjnSOirbApbTdNMFBaZ3JRTzNnWlJsX3RSUFNYbzN2dXB3

0 个答案:

没有答案