`
bolutes
  • 浏览: 890054 次
文章分类
社区版块
存档分类
最新评论

Android Jamendo开源在线音乐播放器源码分析九 ViewFlipper及自定义布局控件的分析

 
阅读更多

在之前分析过这个ViewFlipper代码:

备注一:ViewFlipper

界面的最上面的mViewFlipper中包含了mGallery、mProgressBar、mFailureBar,刚开始以为最上面部分的显示是通过不同状态下设置View的visibility的VISIBLE,INVISIBLE, orGONE.来显示的,看完代码之后才知道是用的ViewFlipper这个空间实现的,代码显得更加清楚。

  1. <com.teleca.jamendo.util.FixedViewFlipper
  2. android:orientation="vertical"android:id="@+id/ViewFlipper"
  3. android:layout_width="fill_parent"android:layout_height="75dip"
  4. android:background="@drawable/gradient_dark_purple">
  5. <!--(0)Loading-->
  6. <LinearLayoutandroid:orientation="vertical"
  7. android:layout_width="fill_parent"android:layout_height="fill_parent"
  8. android:layout_marginLeft="15dip"android:gravity="left|center_vertical">
  9. <com.teleca.jamendo.widget.ProgressBar
  10. android:id="@+id/ProgressBar"android:layout_width="wrap_content"
  11. android:layout_height="wrap_content">
  12. </com.teleca.jamendo.widget.ProgressBar>
  13. </LinearLayout>
  14. <!--(1)Gallery-->
  15. <LinearLayoutandroid:orientation="vertical"
  16. android:layout_width="fill_parent"android:layout_height="fill_parent"
  17. android:gravity="center">
  18. <Galleryandroid:id="@+id/Gallery"android:layout_width="fill_parent"
  19. android:layout_height="wrap_content"android:spacing="0px"/>
  20. </LinearLayout>
  21. <!--(2)Failure-->
  22. <LinearLayoutandroid:orientation="vertical"
  23. android:layout_width="fill_parent"android:layout_height="fill_parent"
  24. android:layout_marginLeft="15dip"android:gravity="left|center_vertical">
  25. <com.teleca.jamendo.widget.FailureBar
  26. android:id="@+id/FailureBar"android:layout_width="wrap_content"
  27. android:layout_height="wrap_content">
  28. </com.teleca.jamendo.widget.FailureBar>
  29. </LinearLayout>
  30. </com.teleca.jamendo.util.FixedViewFlipper>
在onCreate()里面启动一个AsyncTask来加载,根据不同的结果决定显示ViewFlipper的哪部分内容

  1. privateclassNewsTaskextendsAsyncTask<Void,WSError,Album[]>{
  2. @Override
  3. publicvoidonPreExecute(){
  4. mViewFlipper.setDisplayedChild(0);
  5. mProgressBar.setText(R.string.loading_news);
  6. super.onPreExecute();
  7. }
  8. @Override
  9. publicAlbum[]doInBackground(Void...params){
  10. JamendoGet2Apiserver=newJamendoGet2ApiImpl();
  11. Album[]albums=null;
  12. try{
  13. albums=server.getPopularAlbumsWeek();
  14. }catch(JSONExceptione){
  15. e.printStackTrace();
  16. }catch(WSErrore){
  17. publishProgress(e);
  18. }
  19. returnalbums;
  20. }
  21. @Override
  22. publicvoidonPostExecute(Album[]albums){
  23. if(albums!=null&&albums.length>0){
  24. mViewFlipper.setDisplayedChild(1);
  25. ImageAdapteralbumsAdapter=newImageAdapter(HomeActivity.this);
  26. albumsAdapter.setList(albums);
  27. mGallery.setAdapter(albumsAdapter);
  28. mGallery.setOnItemClickListener(mGalleryListener);
  29. mGallery.setSelection(albums.length/2,true);//animatetocenter
  30. }else{
  31. mViewFlipper.setDisplayedChild(2);
  32. mFailureBar.setOnRetryListener(newOnClickListener(){
  33. @Override
  34. publicvoidonClick(Viewv){
  35. newNewsTask().execute((Void)null);
  36. }
  37. });
  38. mFailureBar.setText(R.string.connection_fail);
  39. }
  40. super.onPostExecute(albums);
  41. }
  42. @Override
  43. protectedvoidonProgressUpdate(WSError...values){
  44. Toast.makeText(HomeActivity.this,values[0].getMessage(),Toast.LENGTH_LONG).show();
  45. super.onProgressUpdate(values);
  46. }
  47. }
在这个AsyncTask中进行专辑的加载,在加载时onPreExecute()中mViewFlipper.setDisplayedChild(0);也就是上面xml代码中的(0) Loading部分,然后在doInBackground()中进行专辑的加载,当加载完之后onPostExecute(Album[] albums),然后根据加载专辑是否成功,选择相应的界面,是显示加载成功之后的(1) Gallery还是加载失败之后的(2) Failure。其实这里关键是这个空间ViewFlipper,在API中的解释是:

android.widget.ViewFlipper

SimpleViewAnimatorthat 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.

备注二:自定义布局、控件

在com.teleca.jamendo.widget这个包中都是一些自定义的布局或者组件,这些布局和组件都是可以复用的。

ProgressBar

这个是当程序加载的时候显示的

progress_bar.xml

我使用的时候只要mProgressBar.setText(R.string.loading_news);就可以设置他显示的文字信息

RemoteImageView

正如作者所说ImageView extended class allowing easy downloadingof remote images。这个很好的获取图片的封装类,使我想显示图片的时候不用关心怎么从网络获取图片以及怎么生成图片,我只要将图片的URL地址传进来就可以了,获取完图片调用父类ImageView的setImageBitmap就可以显示想要的图片了。


分享到:
评论

相关推荐

    Jamendo android开源在线音乐播放器

    Jamendo在线音乐播放器是一款android平台在开源的在线音乐播放,该播放器的主要特色如下: 1. 界面美观,在jamendo播放器中精美的布局的随处可见,大量使用自定义控件和Adapter进行布局,这点可供初学者好好探讨...

    jamendo_一款android开源的在线音乐播放器源代码

    《jamendo:Android开源在线音乐播放器源代码详解》 jamendo是一款专为Android平台设计的开源音乐播放器,它提供了丰富的在线音乐资源,让用户能够免费享受来自全球各地的独立艺术家创作的音乐。这款应用的独特之处...

    telecapoland-jamendo-android-6cd07fb(国外开源音乐播放器)安卓源码.7z

    本篇文章将深入探讨“telecapoland-jamendo-android-6cd07fb”这一国外开源音乐播放器的安卓源码,帮助读者理解其设计思路、架构布局以及关键功能的实现。 首先,"telecapoland-jamendo-android"是一款基于Android...

    Android应用源码之jamendo-开源在线音乐.zip项目安卓应用源码下载

    Android应用源码之jamendo-开源在线音乐.zip项目安卓应用源码下载Android应用源码之jamendo-开源在线音乐.zip项目安卓应用源码下载 1.适合学生毕业设计研究参考 2.适合个人学习研究参考 3.适合公司开发项目技术参考

    Android应用源码之jamendo-开源在线音乐.zip

    《Android应用源码解析:深度探索jamendo开源在线音乐项目》 在移动设备的世界里,Android应用程序以其开放性和灵活性赢得了广大开发者和用户的喜爱。而开源项目更是为开发者提供了丰富的学习资源,它们展示了实际...

    安卓Android源码——jamendo-开源在线音乐.zip

    【Android源码解析——jamendo开源在线音乐应用】 在安卓(Android)开发领域,了解和研究源码是提升技能、优化应用性能的重要途径。这里我们关注的是“jamendo”项目,一个开源的在线音乐应用程序,它允许用户免费...

    Android应用源码之jamendo-开源在线音乐_jamendo.zip

    《Android应用源码解析:深度探索jamendo开源在线音乐应用》 在当今移动互联网时代,Android平台上的应用程序种类繁多,其中音乐类应用占据了一席之地。本文将深入剖析开源项目"jamendo",它是一款专为Android用户...

    Android应用源码之telecapoland-jamendo-android-6cd07fb(国外开源音乐播放器).zip

    【Android应用源码之telecapoland-jamendo-android-6cd07fb(国外开源音乐播放器)】 这个开源项目是专门为Android平台设计的一个音乐播放器,名为telecapoland-jamendo-android,版本号为6cd07fb。它允许用户浏览...

    在线音乐播放器完整源码

    本资源提供的是一个基于Android系统的在线音乐播放器的完整源码,名为"telecapoland-jamendo-android-v1.0.0b-35-g847ba33",这将有助于开发者深入理解音乐播放器应用的开发过程和相关技术。 首先,我们来探讨一下...

    jamendo音乐播放器源码

    **jamendo音乐播放器源码解析** jamendo是一款知名的开源音乐播放器,它为用户提供了一个平台,可以在其中发现、收听并支持独立艺术家的音乐作品。由于其源码是开放的,开发者和爱好者可以深入研究其内部机制,学习...

    基于android的音乐播放器源码

    【基于Android的音乐播放器源码】是一款专为Android平台设计的多媒体应用程序,它能够播放音频和视频文件,是Android开发者学习和理解移动应用开发,尤其是音乐播放功能实现的宝贵资源。这款源码提供了深入洞察...

    Android代码-jamendo-开源在线音乐.zip

    《Android开发:jamendo开源在线音乐项目解析》 在当今数字化时代,音乐已经无处不在,而开源项目为开发者提供了无限可能。今天我们要探讨的是一个名为"jamendo"的开源在线音乐项目,它是一个专为Android平台设计的...

    jamendo-Android开源在线音乐播放APP源码.rar

    jamendo-开源在线音乐,这是一款来自国外的Android 原生音乐播放APP软件,支持专辑加载,支持各种音乐的播放控制,界面简洁实用,它的价值的是代码的参考性比较大,这个播放软件还可下载音乐,运行视图如截图所示,...

    国外开源音乐播放器

    "telecapoland-jamendo-android-6cd07fb"可能是这个开源音乐播放器的一个特定版本,它专注于集成Jamendo服务,一个提供免费、合法的开源音乐平台。这个版本可能包含了开发者6cd07fb的某些改进或修复。 总的来说,...

    安卓Android源码——telecapoland-jamendo-android-6cd07fb(国外开源音乐播放器).zip

    《安卓Android源码分析——以telecapoland-jamendo-android-6cd07fb开源音乐播放器为例》 在移动操作系统领域,安卓Android以其开放性和灵活性吸引了大量的开发者和用户。对于那些热衷于深入理解系统运行机制或者...

    安卓Android源码——telecapoland-jamendo-android-6cd07fb(国外开源音乐播放器).rar

    《安卓Android源码分析——以telecapoland-jamendo-android-6cd07fb开源音乐播放器为例》 在移动操作系统领域,安卓Android以其开放性和灵活性吸引了大量的开发者和用户。对于开发者来说,深入理解Android源码是...

    应用源码之jamendo-开源在线音乐.zip

    本文将围绕"应用源码之jamendo-开源在线音乐.zip"这一主题,探讨如何通过分析开源项目jamendo的源码来学习Android开发中的关键知识点,特别是对于毕业设计和代码学习者而言,这是一个极具价值的学习资源。...

Global site tag (gtag.js) - Google Analytics