博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
FlipViewPager 对item实现左右对折滑动翻页效果《IT蓝豹》
阅读量:6839 次
发布时间:2019-06-26

本文共 2292 字,大约阅读时间需要 7 分钟。

hot3.png

FlipViewPager 对item实现左右对折滑动翻页效果

《》,解决左右滑动和上下滑动的事件分发处理机制。

内部实现如下:用ListView试下,对listview设置adapter,这个adapter继承BaseFlipAdapter<Friend>
,然后对每一个item进行view处理,部分代码如下:
class FriendsAdapter extends BaseFlipAdapter<Friend> {

        private final int PAGES = 3;

        private int[] IDS_INTEREST = {R.id.interest_1, R.id.interest_2, R.id.interest_3, R.id.interest_4, R.id.interest_5};

        public FriendsAdapter(Context context, List<Friend> items, FlipSettings settings) {

            super(context, items, settings);
        }

        @Override

        public View getPage(int position, View convertView, ViewGroup parent, Friend friend1, Friend friend2) {
            final FriendsHolder holder;

            if (convertView == null) {

                holder = new FriendsHolder();
                convertView = getLayoutInflater().inflate(R.layout.friends_merge_page, parent, false);
                holder.leftAvatar = (ImageView) convertView.findViewById(R.id.first);
                holder.rightAvatar = (ImageView) convertView.findViewById(R.id.second);
                holder.infoPage = getLayoutInflater().inflate(R.layout.friends_info, parent, false);
                holder.nickName = (TextView) holder.infoPage.findViewById(R.id.nickname);

                for (int id : IDS_INTEREST)

                    holder.interests.add((TextView) holder.infoPage.findViewById(id));

                convertView.setTag(holder);

            } else {
                holder = (FriendsHolder) convertView.getTag();
            }

            switch (position) {

                // Merged page with 2 friends
                case 1:
                    holder.leftAvatar.setImageResource(friend1.getAvatar());
                    if (friend2 != null)
                        holder.rightAvatar.setImageResource(friend2.getAvatar());
                    break;
                default:
                    fillHolder(holder, position == 0 ? friend1 : friend2);
                    holder.infoPage.setTag(holder);
                    return holder.infoPage;
            }
            return convertView;
        }

        @Override

        public int getPagesCount() {
            return PAGES;
        }

        private void fillHolder(FriendsHolder holder, Friend friend) {

            if (friend == null)
                return;
            Iterator<TextView> iViews = holder.interests.iterator();
            Iterator<String> iInterests = friend.getInterests().iterator();
            while (iViews.hasNext() && iInterests.hasNext())
                iViews.next().setText(iInterests.next());
            holder.infoPage.setBackgroundColor(getResources().getColor(friend.getBackground()));
            holder.nickName.setText(friend.getNickname());
        }

        class FriendsHolder {

            ImageView leftAvatar;
            ImageView rightAvatar;
            View infoPage;

            List<TextView> interests = new ArrayList<>();

            TextView nickName;
        }
    }

 

 

运行效果:

相关代码

转载于:https://my.oschina.net/u/2461971/blog/516998

你可能感兴趣的文章
市场与需求带动 向智能安放转型成大势所趋
查看>>
云时代看CRM如何引领企业成功?
查看>>
安全攻防之SQL注入
查看>>
OssImport系列之四——最佳实践
查看>>
BurpSuite实例教程讲解
查看>>
《精通Python网络爬虫:核心技术、框架与项目实战》——1.3 网络爬虫的组成...
查看>>
命令行是你的至交好友
查看>>
Android镜像文件的拆解
查看>>
Structured Streaming Programming Guide
查看>>
Python之数据聚合与分组运算
查看>>
2015级C++第14周程序阅读 STL中的简单容器和迭代器
查看>>
ECS服务器集群
查看>>
android Handler机制之ThreadLocal详解
查看>>
netty tcp 字节有序-&gt;对象有序
查看>>
Factory模式与Prototype模式的异同
查看>>
解析LayoutSubviews
查看>>
[翻译] ASCScreenBrightnessDetector
查看>>
Android 自定义ProgressDialog
查看>>
向前插入迭代器
查看>>
将Button等控件嵌入到repeater中
查看>>