ViewFlipper的学习,实现公告轮播条,界面切换动画的效果...

简要概括

在我们平常开发中,其实很多效果都可以用原生的控件来实现,只是我们可能不太知道。我在开发中碰到了一个有意思的控件,就是ViewFilpper。可以用来实现很多效果,比如公告条,导航页的切换,同一个布局不同的展示效果,等等。

  • 效果图(类似广告条的效果)

ViewFlipper的学习,实现公告轮播条,界面切换动画的效果..._第1张图片
ViewFlipper.gif
  • 来看看我们的布局

        
        
        
    ```

- #####代码实现

public class MainActivity extends AppCompatActivity {

private ViewFlipper viewFlipper;
private List mList;
private String[]  des = new String[]{"盈盈一水间,脉脉不得语。"
,"我渴望和你打架,也渴望抱抱你。","醒来觉得甚是爱你。"};

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    viewFlipper = (ViewFlipper) findViewById(R.id.viewfli);
    initData();

    //给ViewFlipper设置内容
    for(int i = 0; i();
    for(int i = 0 ; i

}

#####用到的动画
- #####push_up_in



  
  

- #####push_up_in



  
   

- ####效果图(界面切换的效果,先在布局中写好显示的View)

![View2.gif](http://upload-images.jianshu.io/upload_images/4036989-8d8f052cc5911b92.gif?imageMogr2/auto-orient/strip)

- #####来看看我们的布局

xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xlh="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"








    
    
        

            

                

                

            


            

                

                
            
        
        

```

这里注意的是ViewFlipper 每个子View外层父控件都是LinearLayout。
用到的动画
  • enter_right_in


    

  • enter_right_out


    

  • 代码实现
public class Main2Activity extends AppCompatActivity implements View.OnClickListener {

    private GifView gifView;
    private ViewFlipper viewFlipper;
    private Button btn1;
    private DepositoryStepView depositoryStepView;
    private Button btn2;
    private Button btn3;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);
        initGifView();
        initView();
    }

    /**
     * 初始化控件
     */
    private void initView() {
        viewFlipper = (ViewFlipper) findViewById(R.id.view_flipper);
        depositoryStepView = (DepositoryStepView) findViewById(R.id.depository_step_view);
        btn1        = (Button) findViewById(R.id.btn_first_confirm);
        btn1.setOnClickListener(this);
        btn2 = (Button) findViewById(R.id.btn_second_confirm);
        btn2.setOnClickListener(this);
        btn3 = (Button) findViewById(R.id.btn_three_confirm);
        btn3.setOnClickListener(this);
    }

    /**
     * 播放Gif图动画
     */
    private void initGifView() {
        gifView = (GifView) findViewById(R.id.gif_view);
        //设置gif图
        gifView.setGifImage(R.drawable.love);
        //设置显示的大小,拉伸或压缩
        gifView.setShowDimension(500,500);
        //设置显示方式
        gifView.setGifImageType(GifView.GifImageType.COVER);
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()){
            case R.id.btn_first_confirm://第一步确定按钮
                //setDisplayedChild(index) 根据索引显示子View
                //showPrevious(); 显示上一个
                //showNext(); 显示下一个
                viewFlipper.setDisplayedChild(1);
                depositoryStepView.setCurrentStep(1);
                break;

            case R.id.btn_second_confirm://第二步确定按钮
                viewFlipper.setDisplayedChild(2);
                depositoryStepView.setCurrentStep(2);
                break;

            case R.id.btn_three_confirm://第三步确定按钮
                viewFlipper.setDisplayedChild(0);
                depositoryStepView.setCurrentStep(0);
                break;
        }
    }
}
  • 还可以实现某些效果,有时间再补充。

总结

  • 在平常可发中有很多效果都可以用Andorid原生的控件来实现,只是我们可能不知道,这也省去了我们很多时间,去自定义实现,总结下来,ViewFlipper还是一个很好用的控件。
  • 前人栽树,后人乘凉,还是要感谢一下前辈的无私,Gif图的加载播放用的是GifView.jar,还有一个进度条是xlhstepview,自己修改了一下。有什么不足的地方希望指正,大家一起讨论学习。

你可能感兴趣的:(ViewFlipper的学习,实现公告轮播条,界面切换动画的效果...)