在上一篇博客中我们已经讲解了喜马拉雅开发前的配置,上一张有一个点没有提,在这在补充一下,喜马拉雅申请key 的时候需要签名就是你的SHA1 的值,不知道怎么获取SHA1的值的小伙伴们,可以去其他博客上看下,我就不详细的讲解了,现在我们来进入我们的正文实现喜玛拉雅的功能。
首先上一张效果图给大家看下
上面是我们這个项目要实现后的图,首先我们来分析下布局,上面是一个可以滑动的类别布局,类别下面是展示类别后的标签类,点击标签后在出现图二,点击图二的条目,我们开始播放这个条目。
由于在代码上注释的很清楚,我就直接把代码放上去了,不懂的地方参照下注释理解下就懂了,
MainActivity.class
package com.testopensourceapplication.tingproject; import android.os.Bundle; import android.support.v4.content.ContextCompat; import android.support.v7.app.AppCompatActivity; import android.util.Log; import android.util.TypedValue; import android.view.Gravity; import android.view.View; import android.widget.AdapterView; import android.widget.GridView; import android.widget.HorizontalScrollView; import android.widget.LinearLayout; import android.widget.ListView; import android.widget.TextView; import com.ximalaya.ting.android.opensdk.constants.DTransferConstants; import com.ximalaya.ting.android.opensdk.datatrasfer.CommonRequest; import com.ximalaya.ting.android.opensdk.datatrasfer.IDataCallBack; import com.ximalaya.ting.android.opensdk.model.PlayableModel; import com.ximalaya.ting.android.opensdk.model.album.AlbumList; import com.ximalaya.ting.android.opensdk.model.category.Category; import com.ximalaya.ting.android.opensdk.model.category.CategoryList; import com.ximalaya.ting.android.opensdk.model.live.radio.Radio; import com.ximalaya.ting.android.opensdk.model.tag.Tag; import com.ximalaya.ting.android.opensdk.model.tag.TagList; import com.ximalaya.ting.android.opensdk.model.track.Track; import com.ximalaya.ting.android.opensdk.model.track.TrackList; import com.ximalaya.ting.android.opensdk.player.XmPlayerManager; import com.ximalaya.ting.android.opensdk.player.service.IXmPlayerStatusListener; import com.ximalaya.ting.android.opensdk.player.service.XmPlayerException; import net.tsz.afinal.FinalBitmap; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class MainActivity extends AppCompatActivity { public String TAG ="MainActivity"; public HorizontalScrollView ting_header; private CommonRequest mXimalaya; private String mAppSecret = "c4fce2b85e8f354e071904eb8f595795"; private XmPlayerManager mPlayerManager; private boolean mOnDmandLoading = false;//是否加载点播模块 private int mPageId = 1; private int index = 0; private AlbumList mAlbumList;//标签下的专辑列表 private Category mCategory = null;//点播类别 FinalBitmap mFinalBitmap; /** * 更改textview状态 */ List<TextView> textViews = new ArrayList<TextView>(); LinearLayout ting_choose; //动态生成的存放类别的布局 GridView mTagGridView; //类别下的标签展示列表 ListView mTingTrackListView; // 标签后的listView展示布局 private List<Category> mCategoryList = new ArrayList<Category>();//类别列表 有声书 、音乐、娱乐。。。。。 private List<Tag> mTagList = new ArrayList<Tag>();//类别下的标签列表 悬疑、 言情 幻想 等 private List<Track> mTrackList = new ArrayList<Track>();//标签后 专辑下的声音列表 private TingTagAdapter mTingTagAdapter;//类别列表后的 标签适配器 private TingTracksAdapter mTingTrackAdapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initData(); initView(); CategoryData(); } //初始化喜马拉雅 public void initData(){ mFinalBitmap = FinalBitmap.create(MainActivity.this); mFinalBitmap.configLoadfailImage(R.drawable.ting_default_icon); mFinalBitmap.configLoadingImage(R.drawable.ting_default_icon); mXimalaya = CommonRequest.getInstanse(); mXimalaya.init(MainActivity.this, mAppSecret); mXimalaya.setDefaultPagesize(50); mPlayerManager = XmPlayerManager.getInstance(this); mPlayerManager.init(); mPlayerManager.addPlayerStatusListener(mPlayerStatusListener); } //初始化控件 public void initView(){ ting_header = (HorizontalScrollView) findViewById(R.id.ting_header); ting_choose = (LinearLayout) findViewById(R.id.ting_choose); //存放分类的布局 mTagGridView = (GridView) findViewById(R.id.gv_tag_list); //类别下的展示列表 mTingTrackListView = (ListView) findViewById(R.id.gv_category_item_list); mTingTagAdapter = new TingTagAdapter(mTagList, MainActivity.this); mTagGridView.setAdapter(mTingTagAdapter); //设置类别声音适配器 mTingTrackAdapter = new TingTracksAdapter(mTrackList, MainActivity.this, mFinalBitmap, mPlayerManager); mTingTrackListView.setAdapter(mTingTrackAdapter); } //点击事件 public void CategoryData(){ loadOnDamendCategory(); //标签的点击事件 //如点击 悬疑 言情 之类的 //点击标签时掩藏 头部(分类的布局),标签的布局