zoukankan      html  css  js  c++  java
  • ViewFlipper 淘宝头条 轮播 自动切换

    ViewFlipper介绍

    ViewFilpper类继承于ViewAnimator,而ViewAnimator类继承于FrameLayout。
       
    ViewAnimator:
    Base class for a FrameLayout container that will perform执行 animations when switching切换 between its views.

    ViewFilpper:
    Simple ViewAnimator that will animate between two or more views that have been added to it.  Only one child is shown at a time.  If requested, can automatically flip自动翻转 between each child at a regular interval间隔.

    常用API

    查看ViewAnimator类的源码可以看出此类的作用主要是为其中的View切换提供动画效果。该类有如下几个和动画相关的方法:
    • setInAnimation(Animation)与setInAnimation(Context, resourceID):设置View进入屏幕时候使用的动画
    • setOutAnimationgetInAnimation、getOutAnimation:动画
    • showNext、showPrevious:显示FrameLayout里面的下/一个View
    • getCurrentView:当前的View。Returns the View corresponding to the currently displayed child.
    • setDisplayedChild、getDisplayedChild:正在显示的View的序号。Returns the index of the currently displayed child view.
    • setAnimateFirstView(boolean animate)、getAnimateFirstViewTrue to animate the current View the first time it is displayed, false otherwise.
    • 此外还有各种removeView方法。

    查看ViewFlipper的源码可以看到,ViewFlipper主要用来实现View的自动切换。该类提供了如下几个主要的方法:

    • setFilpInterval:设置View切换的时间间隔,参数为毫秒
    • startFlipping:开始进行View的切换,切换会循环进行
    • stopFlipping:停止View切换
    • isFlipping: 用来判断View切换是否正在进行 。Returns true if the child views are flipping.
    • setAutoStart:设置是否自动开始,如果设置为true,当ViewFlipper显示的时候View的切换会自动开始
    • isAutoStart:是否为自动开始,Returns true if this view automatically calls startFlipping() when it becomes attached to a window.
    一般情况下,我们都会使用ViewFilpper类实现View的切换,而不使用它的父类ViewAnimator类。

    案例

    public class MainActivity extends Activity {
        private ViewFlipper flipper1flipper2;
        private List<TBean> mList = new ArrayList<TBean>();
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            LinearLayout layout = new LinearLayout(this);
            layout.setOrientation(LinearLayout.VERTICAL);
            flipper1 = new ViewFlipper(this);
            flipper1.setBackgroundColor(0x330000ff);
            flipper2 = new ViewFlipper(this);
            flipper2.setBackgroundColor(0x33ff0000);
            layout.addView(flipper1);
            layout.addView(flipper2);
            initFlipper(flipper1, R.anim.anim_in, R.anim.anim_out);
            initFlipper(flipper2, R.anim.anim_in2, R.anim.anim_out2);
            setContentView(layout, new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));
        }
        private void initFlipper(ViewFlipper flipper, int animIn, int animOut) {
            mList.add(new TBean("疯传  家人给2岁孩子喝这个,孩子智力倒退10岁""https://www.baidu.com/"));
            mList.add(new TBean("哈哈  日本玩家33万甩卖15万张游戏王卡""http://www.sina.com.cn/"));
            mList.add(new TBean("头条  内疚逃命时没带够,回废墟狂挖30小时""https://www.google.com.hk/"));
            int size = mList.size();
            for (int i = 0; i < size; i++) {
                final int num = i;
                TextView tv = new TextView(this);
                tv.setText(mList.get(i).Title);
                tv.setTextColor(0xff424954);
                tv.setTextSize(TypedValue.COMPLEX_UNIT_SP, 13);
                tv.setCompoundDrawablesWithIntrinsicBounds(R.drawable.ic_launcher, 0, 0, 0);
                tv.setGravity(Gravity.CENTER_VERTICAL);
                tv.setOnClickListener(new OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(mList.get(num).PageUrl)));
                    }
                });
                flipper.addView(tv);
            }
            flipper.setFlipInterval(3000);//间隔时间
            flipper.setInAnimation(this, animIn);
            flipper.setOutAnimation(this, animOut);
            flipper.startFlipping();
        }
        public static class TBean {
            public TBean(String title, String pageUrl) {
                Title = title;
                PageUrl = pageUrl;
            }
            public String Title;
            public String PageUrl;
        }
    }

    附件列表

    • 相关阅读:
      LeetCode485 最大连续1的个数
      LeetCode167 两数之和 II
      js浮点数类型
      js整数类型
      js布尔类型
      js重复赋值 js数据交换 js调式方法
      JavaScript变量
      数据类型分类
      重复赋值 数据交换 查看程序执行结果
      JS注释 JS变量
    • 原文地址:https://www.cnblogs.com/baiqiantao/p/01be329f56107b7dd42a6b9e8d5cbd3d.html
    Copyright © 2011-2022 走看看