AdapterViewFlipper和StackView的使用

7 篇文章 0 订阅
2 篇文章 0 订阅

练习使用AdapterViewFlipper

1.xml布局文件 

<?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"
    android:orientation="vertical" >

    <AdapterViewFlipper
        android:id="@+id/flipper1"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:flipInterval="5000"
        android:layout_alignParentTop="true"
        >
    </AdapterViewFlipper>
    <Button 
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true"
        android:onClick="prev"
        android:text="上一个"
        />
    <Button 
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:onClick="next"
        android:text="下一个"
        />
    <Button 
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignParentRight="true"
        android:onClick="auto"
        android:text="自动"
        />

</RelativeLayout>
Java代码:其实就和ListView组件一样的使用方法,扩展BaseAdapter显示你需要的View(重写getView()方法)

package com.example.uipractise;

import android.app.ActionBar.LayoutParams;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterViewFlipper;
import android.widget.BaseAdapter;
import android.widget.ImageView;

public class Pflipper extends Activity {

	private int[] image=new int[]{
			R.drawable.x,R.drawable.y,R.drawable.z
			};
	AdapterViewFlipper af;
	public void onCreate(Bundle savedInstanceState){
		super.onCreate(savedInstanceState);
		setContentView(R.layout.flipper_main);
	    af=(AdapterViewFlipper)findViewById(R.id.flipper1);
		BaseAdapter ba=new BaseAdapter() {
			
			@Override
			public View getView(int arg0, View arg1, ViewGroup arg2) {
				// TODO Auto-generated method stub
				ImageView im=new ImageView(Pflipper.this);//创建一个现实图像的组件
				im.setImageResource(image[arg0]);
				im.setScaleType(ImageView.ScaleType.FIT_XY);
				im.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.MATCH_PARENT));
			    return im;
			}
			
			@Override
			public long getItemId(int arg0) {
				// TODO Auto-generated method stub
				return arg0;
			}
			
			@Override
			public Object getItem(int arg0) {
				// TODO Auto-generated method stub
				return image[arg0];
			}
			
			@Override
			public int getCount() {
				// TODO Auto-generated method stub
				return image.length;
			}
		};
		af.setAdapter(ba);
		
	}
	public void prev(View Source){
		af.showPrevious();
		af.stopFlipping();//停止自动播放
	}
	public void next(View Source){
		af.showNext();
		af.stopFlipping();
	}
	public void auto(View Source){
		af.startFlipping();
	}
	

}
与普通的ListView不同的是,增加了showPrevious(),showNext(),startFlipping(),startAnimation()等方法,可以根据需要进行设计。在上面的例子中,xml文件中已经设置了android:flipInterval="5000"即每隔5秒进行一次变化

可以查询API了解其他函数:http://www.android-doc.com/reference/android/widget/AdapterViewFlipper.html


练习使用StackView

使用StackView时发现它是以堆叠的方式呈现的,支持手势滑动,不能自动播放;而AdapterViewFlipper则类似于被水平排成一行,在View之间以渐隐渐现的动画切换。使用起来感觉也差不多。


在xml文件中有两个属性比较特殊:

android:loopviews=“ ”(设为true则是指允许轮播,当“播”到最后一张图片时,next是第一张,像是首尾衔接)

android:layerType=“ ”(hardware,software,none三个选项,三个参数分别设置后好像没感觉到什么区别,查了资料说是与硬件加速有关,也就是在动画设置的时候有作用,之后用到了再看吧)

因为测试的代码部分和上面使用的没有什么区别,就不贴代码了,主要是感受一下这两个组件显示效果的不同吧。




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值