为可滚动网格屏幕实现openAphid Flip动画(flipboard)

时间:2016-02-08 07:41:13

标签: android animation

大家好,我在实现flipboard app页面折叠动画时遇到了问题。我正在使用openaphid / android-flip库。我能够成功地为使用gridview显示项目列表的屏幕实现动画,此库显示仅具有适配器的屏幕的折叠动画,显示适配器的单个项目的折叠动画。现在我想为单个屏幕片段或活动显示这个动画,这是可能的,因为这个动画是在" Havells mCatalogue app"中实现的。如果有人使用过这个库动画并知道如何在网格视图中显示几个项目的屏幕实现动画,请告诉我如何处理这个问题。我正在从应用程序中添加照片以供参考。 这里是动画库的链接

https://github.com/openaphid/android-flip image 1[![][1]] 2

1 个答案:

答案 0 :(得分:0)

我能够通过扩展一个片段来实现所需的功能,该片段在一个扩展基本适配器的适配器类的getView方法中显示带有适配器的gridview。但由于翻转无法翻转具有网格视图的此片段的下一个项目,因此我需要采用不同的技术。即我必须创建硬编码屏幕并定义适配器的硬编码计数,我习惯将其设置为翻转视图控制器和内部获取此适配器的视图方法,具体取决于位置我加载不同的xml并相应地实例化视图。我知道这是非常糟糕的技术和详尽的但现在这是我找到的唯一解决方案。

这是我的代码

FragmentLoaderAdapterFragment.java

public class FragmentLoaderAdapterFragment extends Fragment {

private FlipViewController flipView;

public FragmentLoaderAdapterFragment() {
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    flipView = new FlipViewController(inflater.getContext());
    flipView.setAdapter(new SingleFragmentDisplayAdapter());

    return flipView;

}

@Override
public void onResume() {
    super.onResume();
    flipView.onResume();
}

@Override
public void onPause() {
    super.onPause();
    flipView.onPause();
}

@Override
public void onDestroy() {
    super.onDestroy();
    flipView = null;
}

private class SingleFragmentDisplayAdapter extends BaseAdapter {


    public SingleFragmentDisplayAdapter() {
    }

    @Override
    public int getCount() {
        return 2;
    }

    @Override
    public Object getItem(int i) {
        return i;
    }

    @Override
    public long getItemId(int i) {
        return i;
    }

    @Override
    public View getView(int i, View view, ViewGroup viewGroup) {
        if (i==0){
            view = View.inflate(getActivity(),R.layout.fragment_consumer_products,null);
            LinearLayout cableLinearLayout = (LinearLayout) view.findViewById(R.id.cablesLayout);
            cableLinearLayout.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    Toast.makeText(getActivity(), "Clicked", Toast.LENGTH_SHORT).show();
                }
            });
            return view;
        } if (i==1){
            view = View.inflate(getActivity(),R.layout.fragment_consumer_products2,null);
            LinearLayout cableLinearLayout = (LinearLayout) view.findViewById(R.id.cablesLayout);
            cableLinearLayout.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    Toast.makeText(getActivity(), "Clicked", Toast.LENGTH_SHORT).show();
                }
            });
            return view;
        } else {
            return null;
        }
    }

}
}

enter image description here