`

ViewFlipper的使用,显示图片左右滑动效果

 
阅读更多

1.简介

          ViewFlipper extends ViewAnimator,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。

           简单的ViewAnimator 可以在两个或两个以上的视图间实现动画效果,但是一次只能显示一个子类。如果设置的话,子类可以按照一定规律来显示。

 

2. 具体使用

 边上代码边解释

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
	android:orientation="vertical" android:layout_width="fill_parent"
	android:layout_height="fill_parent" android:background="#ffffff">
<!-- 滑动翻页显示 -->
	<ViewFlipper
		android:orientation="vertical" android:id="@+id/ViewFlipper"
		android:layout_width="fill_parent" android:layout_height="75dip"
		android:background="@drawable/gradient_dark_purple">

		<!-- (0) Loading -->
		<LinearLayout android:orientation="vertical"
			android:layout_width="fill_parent" android:layout_height="fill_parent"
			android:layout_marginLeft="15dip" android:gravity="left|center_vertical">
			<com.teleca.jamendo.widget.ProgressBar
				android:id="@+id/ProgressBar" android:layout_width="wrap_content"
				android:layout_height="wrap_content">
			</com.teleca.jamendo.widget.ProgressBar>
		</LinearLayout>

		<!-- (1) Gallery -->
		<LinearLayout android:orientation="vertical"
			android:layout_width="fill_parent" android:layout_height="fill_parent"
			android:gravity="center">
			<Gallery android:id="@+id/Gallery" android:layout_width="fill_parent"
				android:layout_height="wrap_content" android:spacing="0px" />
		</LinearLayout>

		<!-- (2) Failure -->
		<LinearLayout android:orientation="vertical"
			android:layout_width="fill_parent" android:layout_height="fill_parent"
			android:layout_marginLeft="15dip" android:gravity="left|center_vertical">
			<com.teleca.jamendo.widget.FailureBar
				android:id="@+id/FailureBar" android:layout_width="wrap_content"
				android:layout_height="wrap_content">
			</com.teleca.jamendo.widget.FailureBar>
		</LinearLayout>
	</ViewFlipper>
</LinearLayout>

 在viewflipper中有三个线性布局,分别为初始加载和加载后以及加载失败。当我们在activity中这个viewflipper实例化时,我们打印

mViewFlipper.getDisplayedChild()

 

会得到3。说明三个linnerlayout为她的子类。同时为了怕给主线程增加负担,我们采用异步实现。

  

private class NewsTask extends AsyncTask<Void, WSError, Album[]> {

		@Override
		public void onPreExecute() {
			mViewFlipper.setDisplayedChild(0);
			
			System.out.println("子类数目----"+mViewFlipper.getChildCount()+" "+mViewFlipper.getDisplayedChild());
			
			mProgressBar.setText(R.string.loading_news);
			super.onPreExecute();
		}

		@Override
		public Album[] doInBackground(Void... params) {
			JamendoGet2Api server = new JamendoGet2ApiImpl();
			Album[] albums = null;
			try {
				albums = server.getPopularAlbumsWeek();
			} catch (JSONException e) {
				e.printStackTrace();
			} catch (WSError e){
				publishProgress(e);
			}
			System.out.println("doInBackground"+mViewFlipper.getDisplayedChild());
			return albums;
		}

		@Override
		public void onPostExecute(Album[] albums) {

			if(albums != null && albums.length > 0){
				mViewFlipper.setDisplayedChild(1);
				ImageAdapter albumsAdapter = new ImageAdapter(HomeActivity.this);
				albumsAdapter.setList(albums);
				mGallery.setAdapter(albumsAdapter);
				mGallery.setOnItemClickListener(mGalleryListener);
				mGallery.setSelection(albums.length/2, true); // animate to center

			} else {
				mViewFlipper.setDisplayedChild(2);
				mFailureBar.setOnRetryListener(new OnClickListener(){

					@Override
					public void onClick(View v) {
						new NewsTask().execute((Void)null);
					}

				});
				mFailureBar.setText(R.string.connection_fail);
			}
System.out.println("onPostExecute"+mViewFlipper.getDisplayedChild());
			super.onPostExecute(albums);
		}

 

这个类实现了我们的操作。

 在oncreate()中使用

new NewsTask().execute((Void)null);

 

调用异步操作。

接下来,我们只讲解子类1,即加载成功后的显示效果。

如图:



 在以上代码中,if(albums != null && albums.length > 0){
mViewFlipper.setDisplayedChild(1);//设置显示第一面即成功加载后的效果
ImageAdapter albumsAdapter = new ImageAdapter(HomeActivity.this);//自定义了一个adpter,来组织显示样式
    albumsAdapter.setList(albums);//将数据放入其中,那么albums 自然是个bean了。里面定义了albums 的各种属性,如发行时间,专辑名等。
    mGallery.setAdapter(albumsAdapter);//给画布设置适配器,使画布显示出效果来。
mGallery.setOnItemClickListener(mGalleryListener);//添加监听,实现对指定专辑的使用
    mGallery.setSelection(albums.length/2, true);} //设置默认显示区域

 

 

  • 大小: 43.3 KB
分享到:
评论

相关推荐

    最简单的ViewFlipper实现图片跟随手势滑动

    在这个“最简单的ViewFlipper实现图片跟随手势滑动”的教程中,我们将深入探讨如何通过源码和工具来创建一个用户可以通过手势左右滑动来切换图片的应用。 首先,我们要了解ViewFlipper的基本用法。ViewFlipper继承...

    ViewPager和ViewFlipper实现图片左右滑动

    总结,"ViewPager和ViewFlipper实现图片左右滑动"主要是利用这两个组件的特性,结合数据适配和手势处理,创建一个可滑动浏览的图片导航界面。在实际项目中,开发者应根据需求选择合适的组件,比如,如果需要实现多页...

    ViewFlipper+AsyncImageLoader实现页面滑动及页面图片异步加载

    ListView与ViewFlipper结合,可以创建出复杂的滑动页面,比如每个ListView项都是一个包含图片和文本的完整页面,而整个ListView则可以通过ViewFlipper来实现整体的左右滑动效果。 总结来说,这个主题涵盖了Android...

    listview嵌套gridview,viewflipper左右滑动图片

    viewflipper左右滑动图片效果 。从服务器取出图片,实现图片缓存 。 我也是消耗过多的积分组合了代码,希望有帮助需要的, 注意: 跑起 需要服务器 将我的资源放在 tomcat里 , 修改 ...

    UI开发第八篇——ViewFlipper 左右滑动效果

    总的来说,实现ViewFlipper的左右滑动效果,关键在于结合使用ViewFlipper和GestureDetector。通过监听用户的滑动手势,动态切换ViewFlipper中的子视图,并配合适当的动画,可以创建出流畅且直观的用户界面。这种技术...

    ViewFlipper图片滑屏双击放大 图片旋转

    本教程将详细介绍如何利用ViewFlipper实现图片的左右滑动、双击放大以及图片旋转功能。 1. **ViewFlipper基本使用** ViewFlipper继承自ViewGroup,可以包含多个子视图(例如ImageView)。默认情况下,ViewFlipper...

    ViewFlipper实现图片轮播

    现在,用户不仅可以自动观看图片轮播,还可以通过左右滑动手动切换图片。 在实际项目中,你可能需要根据需求调整图片加载方式,比如使用`Glide`或`Picasso`库来异步加载网络图片。此外,你还可以添加图片指示器、...

    安卓ViewFlipper级滑动改变图片

    在这个主题中,“安卓ViewFlipper及滑动改变图片”主要涉及如何利用ViewFlipper来创建一个能够通过用户滑动手势来切换显示图片的应用。下面我们将深入探讨ViewFlipper的工作原理、基本用法以及如何结合滑动手势来...

    ViewFlipper

    ViewPager可以承载多个Fragment,允许用户左右滑动切换页面,同时提供了内置的滑动手势处理和动画效果。此外,Fragments还有更好的生命周期管理和回退栈支持,使得代码更易于维护。 总结起来,虽然ViewFlipper是...

    android左右滑动切换图片

    6. **图片加载库**:为了高效地加载和显示图片,开发者通常会用到像Glide、Picasso或 Fresco这样的第三方库。这些库能够优化内存使用,处理图片缩放,甚至支持网络图片的加载。 7. **性能优化**:考虑到可能存在的...

    android GridView+ViewFlipper实现图片浏览

    通过监听ViewFlipper的动画事件,我们可以实现左右滑动来切换图片,模拟图片浏览的效果。 实现这个功能的步骤如下: 1. **获取SD卡图片**:使用`Environment.getExternalStorageDirectory()`获取SD卡根目录,再...

    Android应用源码之Gallery+ImageSwitcher+ViewFlipper实现手机查看壁纸效果.zip

    在这个案例中,当用户在Gallery中选择一个新的壁纸时,ImageSwitcher会使用平滑的动画效果将当前显示的图片替换为用户选择的新图片,从而提供更佳的用户体验。ImageSwitcher内部默认使用`ViewFlipper`作为其切换动画...

    ViewFlipper无限轮播

    ViewFlipper是Android SDK中的一个视图容器,用于在多个视图之间进行切换,它可以包含多个子视图,如ImageView、TextView等,并且可以轻松地实现动画效果,比如左右滑动来展示不同的视图。在Android开发中,...

    Android实现图片左右滑动效果

    在Android开发中,实现图片左右滑动效果是一个常见的需求,特别是在设计用户界面或者构建滑动浏览的图片库时。本文将详细介绍如何使用ViewFlipper组件和GestureDetector类来实现这一功能。 首先,我们要理解`...

    viewflipper

    在实际开发中,`ViewFlipper`的使用通常会结合其他视图组件,如`ImageView`展示图片,`TextView`显示文字信息,甚至可以嵌套其他的`ViewGroup`来构建复杂的布局。为了实现点击切换页面的需求,可以在`ViewFlipper`的...

    Gallery+ImageSwitcher+ViewFlipper实现手机查看壁纸效果.zip

    在壁纸应用中,Gallery通常用于展示不同的壁纸图片,用户可以通过左右滑动来预览不同壁纸。Gallery的特点是可以实现无缝滚动,使得用户在滚动时感觉非常流畅。 2. **ImageSwitcher组件**: ImageSwitcher是另一个...

    图片实现滑动切换

    `ViewFlipper`是Android SDK提供的一种布局容器,它可以动态地添加、删除或切换子视图,尤其适合用来实现动画过渡效果,比如图片的左右滑动切换。下面我们将详细探讨如何使用`ViewFlipper`实现这个功能。 1. **引入...

    Android ActivtiyGroup和ViewFlipper实现Activity滑屏切换

    它可以方便地实现动画效果,如左右滑动来切换视图,这在实现简单的滑屏切换效果时非常有用。不过,`ViewFlipper`通常用于展示同类型的视图,而不是不同`Activity`之间的切换。因此,如果你想要在不同的`Activity`...

Global site tag (gtag.js) - Google Analytics