Android学习笔记二十二之ViewFlipper&&AdapterViewFlipper
来源:互联网 发布:linux cpu省电模式 编辑:程序博客网 时间:2024/05/18 08:53
Android学习笔记二十二之ViewFlipper&&AdapterViewFlipper
ViewFilpper和AdapterViewFlipper,是Android自带的一个多页面管理控件。可以把它看做一个容器,它可以放很多个View,每次只向用户展示一个View。与ViewPager不同,它是将View一层一层地摆放,可以使用它来实现图片的轮播。
有这些属性:
android:animateFirstView:设置显示该组件的第一个View时是否使用动画
android:inAnimation:设置组件显示时使用的动画
android:loopViews:设置循环到最后一个组件后是否自动“转头”到第一个组件
android:outAnimation:设置组件隐藏时使用的动画
android:autoStart:设置显示该组件是否是自动播放
android:flipInterval:设置自动播放的时间间隔
下面直接通过实例来体会一些这两个控件:
Activity代码:
package com.example.filpperdemo;import android.os.Bundle;import android.support.annotation.Nullable;import android.support.v7.app.AppCompatActivity;import android.widget.ViewFlipper;/** * Created by Devin on 2016/7/6. */public class ViewFilpperActivity extends AppCompatActivity {private ViewFlipper vf;@Overrideprotected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_viewfilpper); vf = (ViewFlipper) findViewById(R.id.vf); vf.startFlipping();}}
布局比较简单,就不贴代码了,这里需说明一下的就是,ViewFilpper可以通过布局文件加载View,也可以通过代码加载View。例子中只通过布局文件加载View,后面会附上例子源码,有兴趣的可以看一下。
AdapterViewFilpper控件:
Activity代码:
package com.example.filpperdemo;
import android.os.Bundle;import android.support.annotation.Nullable;import android.support.v7.app.AppCompatActivity;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.AdapterViewFlipper;import android.widget.BaseAdapter;import android.widget.Button;import android.widget.ImageView;/** * Created by Devin on 2016/7/6. */public class AdapterViewFilpperActivity extends AppCompatActivity {private AdapterViewFlipper avf;private Button btn_prev;private Button btn_auto;private Button btn_next;private int[] images = {R.drawable.vf_08, R.drawable.vf_09, R.drawable.vf_10, R.drawable.vf_11, R.drawable.vf_12, R.drawable.vf_13, R.drawable.vf_14};@Overrideprotected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_adapterviewfilpper); avf = (AdapterViewFlipper) findViewById(R.id.avf); avf.setAdapter(new AVFAdapter()); btn_prev = (Button) findViewById(R.id.btn_prev); btn_prev.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { avf.stopFlipping(); avf.showPrevious(); } }); btn_auto = (Button) findViewById(R.id.btn_auto); btn_auto.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { avf.startFlipping(); } }); btn_next = (Button) findViewById(R.id.btn_next); btn_next.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { avf.stopFlipping(); avf.showNext(); } });}private class AVFAdapter extends BaseAdapter { @Override public int getCount() { return images.length; } @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) { ViewHolder viewHolder; if (view == null) { view = LayoutInflater.from(AdapterViewFilpperActivity.this).inflate(R.layout.item_avf, null); viewHolder = new ViewHolder(); viewHolder.imageView = (ImageView) view.findViewById(R.id.iv_avf); view.setTag(viewHolder); } else { viewHolder = (ViewHolder) view.getTag(); } viewHolder.imageView.setImageResource(images[i]); return view; }}static class ViewHolder { ImageView imageView;}}
布局文件代码:
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"><AdapterViewFlipper android:id="@+id/avf" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_alignParentTop="true" android:animateFirstView="true" android:flipInterval="3000" /><Button android:id="@+id/btn_prev" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_alignParentLeft="true" android:layout_marginBottom="8dp" android:layout_marginLeft="8dp" android:text="前一个" /><Button android:id="@+id/btn_auto" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_centerHorizontal="true" android:layout_marginBottom="8dp" android:text="自动轮播" /><Button android:id="@+id/btn_next" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_alignParentRight="true" android:layout_marginBottom="8dp" android:layout_marginRight="8dp" android:text="后一个" /></RelativeLayout>
在AdapterViewFilpper中,需要设置适配器,不设置直接用代码加载View的话会出错。
实现的效果图:
使用模拟器,这样会比较耗内存,所以速度有些慢。
猛戳下载源码
附上国内镜像API
阅读全文
0 0
- Android学习笔记二十二之ViewFlipper&&AdapterViewFlipper
- Android学习笔记二十二之ViewFlipper&&AdapterViewFlipper
- Android学习笔记之ViewFlipper
- Android学习笔记之ViewFlipper
- Android 学习笔记 二十二 之Handler
- Android学习之ViewFlipper
- Android学习之ViewFlipper
- AdapterViewFlipper学习笔记
- AdapterViewFlipper组件学习笔记
- android之ViewFlipper详解二
- Android开发系列(二十二):AdapterViewFlipper的功能和用法
- ViewFlipper-----AdapterViewFlipper公告栏
- Android之AdapterViewFlipper与Gallery
- Android界面编程之AdapterViewFlipper
- android widget——ViewFlipper 学习笔记
- android笔记之ViewFlipper的使用
- Android之UI学习篇十二:ListView控件学习(二)
- 学习笔记(二十二)
- VIM编辑器常用命令
- workstation10虚拟机上安装linux系统
- 初识TCP(一)
- struts2框架的总结
- AtCoder Regular Contest 082-F-Sandglass
- Android学习笔记二十二之ViewFlipper&&AdapterViewFlipper
- ES5中的var与ES6中的let,const的区别
- Java 8的新特性总结
- LibreOJ β Round #4 A. 游戏 找逆序对
- forName方法与ClassLoader中loadClass方法的异同
- 用RxJava实现事件总线(Event Bus)
- Android学习笔记二十三之ListView列表视图一
- Java多线程编程核心技术
- Uncaught TypeError: Cannot read property 'length' of null