美文网首页Android开发
Android实现文字随机摆放飞入飞出效果

Android实现文字随机摆放飞入飞出效果

作者: ldlywt | 来源:发表于2016-11-04 20:01 被阅读1976次

    先放上效果图

    文字飞入飞出.gif

    引入第三方框架

    https://github.com/qiushi123/randomlayout

    步骤:

    第一步:初始化第三方控件

    StellarMap mStellarMap = new StellarMap(getActivity());
    //1.设置内部的TextView距离四周的内边距
    int padding = 15;//设置控件到外边距的值
    mStellarMap.setInnerPadding(padding, padding, padding, padding);
    

    第二步:设置适配器

    mStellarMap.setAdapter(new StellarMapAdapter());
    // 设置默认显示第几组的数据
    mStellarMap.setGroup(0, true);// 这里默认显示第0组
    // 设置x和y方向上的显示的密度
    mStellarMap.setRegularity(11, 11);// 如果值设置的过大,有可能造成子View摆放比较稀疏
    

    第三步:设置适配器参数

    class StellarMapAdapter implements StellarMap.Adapter {
        /**
         * 返回有几组数据,就是几页数据
         */
        @Override
        public int getGroupCount() {
            return list.size()/getCount(0);
        }
        /**
         * 返回每组有多少个数据,每组都有11个
         */
        @Override
        public int getCount(int group) {
            return 11;
        }
        /**
         * 返回需要随机摆放的View
         * group: 表示当前是第几组
         * position: 表示当前组中的位置
         */
        @Override
        public View getView(int group, int position, View convertView) {
            final TextView textView = new TextView(getActivity());
            //1.设置文本数据
            int listPosition = group*getCount(group) + position;
            textView.setText(list.get(listPosition)+"");
            //2.设置随机的文字大小
            Random random = new Random();
            textView.setTextSize(random.nextInt(10)+14);//14-23
            //3.设置随机的字体颜色
            int red = random.nextInt(150);//0-190
            int green = random.nextInt(150);//0-190
            int blue = random.nextInt(150);//0-190
            int color = Color.rgb(red, green, blue);//使用rgb混合生成一种新的颜色
            textView.setTextColor(color);
            //4.设置点击事件
            textView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    JUtils.Toast(textView.getText().toString());
                }
            });
            return textView;
        }
        /**
         * 当执行完平移动画后下一组加载哪一组的数据,但是在源码中没有任何地方用到改方法,
         * 所以此方法并没有什么用
         */
        @Override
        public int getNextGroupOnPan(int group, float degree) {
            return 0;
        }
        /**
         * 当执行完缩放动画后下一组加载哪一组的数据
         * group: 表示当前是第几组
         */
        @Override
        public int getNextGroupOnZoom(int group, boolean isZoomIn) {
            //0->1->2->0
            return (group+1)%getGroupCount();
        }
    
    }
    

    相关文章

      网友评论

        本文标题:Android实现文字随机摆放飞入飞出效果

        本文链接:https://www.haomeiwen.com/subject/ffziuttx.html