首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 开源软件 >

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

2012-06-30 
ViewFlipper的使用,显示图片左右滑动效果1.简介????????? ViewFlipper extends ViewAnimator,Simple ViewA

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"><!-- 滑动翻页显示 --><ViewFlipperandroid: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.ProgressBarandroid: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.FailureBarandroid: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[]> {@Overridepublic void onPreExecute() {mViewFlipper.setDisplayedChild(0);System.out.println("子类数目----"+mViewFlipper.getChildCount()+" "+mViewFlipper.getDisplayedChild());mProgressBar.setText(R.string.loading_news);super.onPreExecute();}@Overridepublic 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;}@Overridepublic 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(){@Overridepublic 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,即加载成功后的显示效果。

如图:


ViewFlipper的施用,显示图片左右滑动效果
?在以上代码中,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);} //设置默认显示区域

?

?

热点排行