首先感谢易源API!

提供了QQ音乐的接口~

咳咳...
明天要写文档..看来..哎..我的歌词要等假期了?

回归正题~

首先上一下我的界面啊实现啊啥的~

点击榜单会出现对应的歌曲~

可以搜索网络歌曲~

可以刷新~

先写榜单的实现~

首先是net这个Fragment的布局代码~

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="45dp"
        android:background="#edebeb">
        <EditText
            android:imeOptions="actionSearch"
            android:maxLines="1"
            android:id="@+id/et_findlocal"
            android:textSize="13sp"
            android:hint="搜索网络歌曲"
            android:gravity="center"
            android:layout_marginRight="10dp"
            android:layout_marginLeft="10dp"
            android:background="@drawable/btn_white"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_height="30dp"
            android:layout_gravity="center"/>
        <ImageView
            android:id="@+id/iv_findNet"
            android:layout_marginRight="5dp"
            android:layout_gravity="center"
            android:layout_width="0dp"
            android:layout_weight="0.1"
            android:layout_height="30dp"
            android:background="@drawable/find"/>
    </LinearLayout>
    <RelativeLayout
        android:id="@+id/rl_scroll"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        <GridView
            android:id="@+id/main_gridview"
            android:layout_width="match_parent"
            android:layout_height="240dp"
            android:layout_marginTop="2dp"
            android:gravity="center"
            android:horizontalSpacing="0dp"
            android:numColumns="3"
            android:scrollbars="none"
            android:verticalSpacing="0dp" >
        </GridView>
    </RelativeLayout>
        <ImageView
            android:id="@+id/iv_translateAnimation"
            android:layout_gravity="right"
            android:layout_width="25dp"
            android:layout_height="25dp"
            android:src="@drawable/less" />

    <View
        android:id="@+id/vv_xian"
        android:layout_width="match_parent"
        android:layout_height="5dp"
        android:background="#edebeb"/>
    <com.scwang.smartrefresh.layout.SmartRefreshLayout
        android:id="@+id/sr_fragment_net"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    <android.support.v7.widget.RecyclerView
        android:layout_marginTop="5dp"
        android:layout_width="match_parent"
        android:id="@+id/rv_net_song"
        android:layout_height="wrap_content">
    </android.support.v7.widget.RecyclerView>
    </com.scwang.smartrefresh.layout.SmartRefreshLayout>

</LinearLayout>

然后就是写item_gridview_song.xml的代码~

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="100dp"
    android:layout_height="80dp"
    android:layout_margin="1dp">

    <ImageView
        android:id="@+id/iv_item_main_gird"
        android:layout_width="50dp"
        android:layout_height="50dp"
        android:layout_centerInParent="true"
        android:src="@drawable/find" />

    <TextView
        android:id="@+id/tv_item_main_grid"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:gravity="center"
        android:text="民谣" />

</RelativeLayout>

好啦~界面部分就大功告成~~~然后要给gridview写一个适配器~

package com.music.adapter;

import android.content.Context;
import android.util.SparseArray;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;

import com.music.R;

/**
 * Created by 雅倩宝宝 on 2017/9/19.
 */

public class MusicGridAdapter extends BaseAdapter{private SparseArray<String> gridItems;
    private ViewHolder holder = null;
    private Context context;
    private int[] ids = { R.drawable.rege26,R.drawable.gaotai6,R.drawable.kge36, 
               };  //把图片放入一个字符组
R.drawable.liuxing4,R.drawable.neidi5,R.drawable.net28, R.drawable.oumei3,
 R.drawable.xingge26,R.drawable.yinyueren32
    @Override
    public int getCount() {
        return gridItems.size() > 0 ? gridItems.size() : 0;    }
    public MusicGridAdapter (SparseArray<String>  gridItems, Context context) {
        this.gridItems = gridItems;
        this.context = context;
    }
    @Override
    public Object getItem(int i) {
        return gridItems.get(i);    }
    @Override
    public long getItemId(int i) {
        return 0;    }
    @Override
    public View getView(int i, View view, ViewGroup viewGroup) {
        if(view == null){
            view = LayoutInflater.from(context).inflate(
                    R.layout.item_gridview_song,viewGroup,false);
            holder = new ViewHolder(view);        }
        holder.tvItemMainGrid.setText(gridItems.get(i)+"");
        holder.ivItemMainGird.setImageResource(ids[i]);
        return view;    }
    private class ViewHolder {
        public ImageView ivItemMainGird;
        public TextView tvItemMainGrid;
        public ViewHolder(View convertView) {
            ivItemMainGird =  convertView.findViewById(R.id.iv_item_main_gird);
            tvItemMainGrid = convertView.findViewById(R.id.tv_item_main_grid);        
}    }}

忘记说了..

根据API给到的数据我们要创建一个musicmodle类~(补一个api地址https://www.showapi.com/api/lookPoint/213)

(哎呀 史上最乱写博主...)

public class MusicModle implements Serializable {/**
     * "albumid": 1181789,
     * "downUrl": "http://tsmusic24.tc.qq.com/104778928.mp3",
     * "seconds": 265,
     * "singerid": 12744,
     * "singername": "小沈阳",
     * "songid": 104778928,
     * "songname": "八戒八戒 (《西游记之孙悟空三打白骨精》电影推广曲)",
     * "url": "http://ws.stream.qqmusic.qq.com/104778928.m4a?fromtag=46"
     */

    private int albumid;
    private String downUrl;
    private int seconds;
    private int singerid;
    private String singername;
    private int songid;
    private String songname;
    private String url;

    public int getAlbumid() {return albumid;
    }public void setAlbumid(int albumid) {this.albumid = albumid;
    }public String getDownUrl() {return downUrl;
    }public void setDownUrl(String downUrl) {this.downUrl = downUrl;
    }public int getSeconds() {return seconds;
    }public void setSeconds(int seconds) {this.seconds = seconds;
    }public int getSingerid() {return singerid;
    }public void setSingerid(int singerid) {this.singerid = singerid;
    }public String getSingername() {return singername;
    }public void setSingername(String singername) {this.singername = singername;
    }public int getSongid() {return songid;
    }public void setSongid(int songid) {this.songid = songid;
    }public String getSongname() {return songname;
    }public void setSongname(String songname) {this.songname = songname;
    }public String getUrl() {return url;
    }public void setUrl(String url) {this.url = url;
    }}

接下来我们需要添加两个依赖0 0.

都是第一行代码中提到过的~

阿里嘎多~

compile 'com.squareup.okhttp3:okhttp:3.9.0'//HTTP访问网络
compile 'com.google.code.gson:gson:2.7'

第一个就是连接网络!(我是这样理解的~)

第二个就是解析gson的数据~

首先0 0.创建一个HttpUtil~

由于我们用了那个啥okhttp 然后他不仅方便 还帮我们写好了回调的函数0 0.美滋滋 啊啊啊啊所以我们只需要调用callback就可以了

这应该很简单看懂了吧~

感觉自己的密匙啊啥的~填入URL的相应位置~还有榜单的序号传入 就可以获得对应的数据!~

public class HttpUtil {public static void requestStringData(final int topid ,okhttp3.Callback callback) {OkHttpClient client = new OkHttpClient();
                    Request request = new Request.Builder().url("http://route.showapi.com/213-4?showapi_appid=46426&topid="+topid+"&showapi_sign=f908983676e94a34a11a56eb71400f79").build();
                    client.newCall(request).enqueue(callback);
                }}

我的想法就是在回调中解析数据!所以在这里我又新建了一个MusicModleUtil

虽然我也不知道我为啥要这样做...可能是后面播放起来好处理吧 我是想像我之前写本地音乐那样写~喵呜~~

package com.music.util;

import android.util.Log;

import com.music.bean.MusicModle;

import org.json.JSONArray;
import org.json.JSONObject;

import java.util.ArrayList;
import java.util.List;

import okhttp3.Response;

/**
 * Created by 雅倩宝宝 on 2017/9/20.
 */

public class MusicModleUtil {public static List<MusicModle> list1;
    public static List<MusicModle> parseJOSNWithGSON (Response response){Log.i("TAG", "onCreate:5"+"");
        list1 = new ArrayList<>();
        try{String ResponsData = response.body().string();
            JSONObject jsonObject = new JSONObject(ResponsData);
            String error = jsonObject.getString("showapi_res_error");
            if (!error.equals("")) {Log.i("TAG","error");}String body = jsonObject.getString("showapi_res_body");
            JSONObject jsonObject1 = new JSONObject(body);
            String pagebean = jsonObject1.getString("pagebean");
            JSONObject jsonObject2 = new JSONObject(pagebean);
            String songlist = jsonObject2.getString("songlist");
            JSONArray jsonArray = new JSONArray(songlist);

            for (int i = 0; i < jsonArray.length() ; i++) {MusicModle musicModle = new MusicModle();
                JSONObject jsonObject3 = jsonArray.getJSONObject(i);
                musicModle.setDownUrl(jsonObject3.getString("downUrl"));
                musicModle.setSingername(jsonObject3.getString("singername"));
                musicModle.setSongname(jsonObject3.getString("songname"));
                musicModle.setUrl(jsonObject3.getString("url"));
                list1.add(musicModle);
                Log.i("TAG", "onCreate:4 "+musicModle.getDownUrl());
            }}catch (Exception e ){e.printStackTrace();
        }return list1;
    }
}

解析数据这里要注意了,要一步步进行解析哦~

不要越过~否则会解析不成功的~

我觉得代码都很简单了!!美滋滋~

然后我们就可以回到NetFragment中写代码了~

private Dialog progressDialog;//加载条
private boolean isHide;//判断Gridview是否隐藏
private SparseArray<String> gridItems = new SparseArray<String>();
private Map<String, Integer> maps = new HashMap<String, Integer>();
MusicGridAdapter musicGridAdapter;

第一个呢 是用来传对应的名字~

第二个是点击事件跳转的时候可以把对应的topid传过去~

第三个就是声明啦~

public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {View view = inflater.inflate(R.layout.fragment_network, container, false);
        initData();
        musicGridAdapter = new MusicGridAdapter(gridItems, getContext());
        mainGridview = view.findViewById(R.id.main_gridview);
        mainGridview.setAdapter(musicGridAdapter);
        mainGridview.setOnItemClickListener(new mainGridviewListener());
        ButterKnife.bind(this, view);

        return view;
    }public void showProgressDialog() {//请求网络的时候显示
       if (progressDialog == null) {progressDialog = new Dialog(getContext(), R.style.Pro);
            progressDialog.setContentView(R.layout.dialog_loading);
            progressDialog.getWindow().setBackgroundDrawableResource(android.R.color.transparent);
            TextView msg = (TextView) progressDialog.findViewById(R.id.id_tv_loadingmsg);
            msg.setText("(σ'・д・)σ");
            progressDialog.show();
        }progressDialog.show();
    }public void dissmiss() {  //请求网络后消失if (progressDialog != null) {progressDialog.dismiss();
        }}private void initData() {  //把对应的榜单名字传入gridItems.put(0, getString(R.string.msuic_fenlei_rege));
        gridItems.put(1, getString(R.string.music_fenlei_gantai));
        gridItems.put(2, getString(R.string.music_fenlei_Kge));
        gridItems.put(3, getString(R.string.music_fenlei_liuxing));
        gridItems.put(4, getString(R.string.music_fenlei_neidi));
        gridItems.put(5, getString(R.string.music_fenlei_net));
        gridItems.put(6, getString(R.string.music_fenlei_oumei));
        gridItems.put(7, getString(R.string.music_fenlei_xingge));
        gridItems.put(8, getString(R.string.music_fenlei_yinyueren));
        getFenlei();
    }@OnClick({R.id.iv_findNet, R.id.iv_translateAnimation})public void onViewClicked(View view) {switch (view.getId()) {case R.id.iv_findNet:
            case R.id.iv_translateAnimation:if (isHide) {
//对是否隐藏VIEW进行判断 如果隐藏点击则会显示 否则会隐藏
                    mainGridview.setVisibility(view.VISIBLE);
                    vvXian.setVisibility(view.VISIBLE);
                    ivTranslateAnimation.setImageResource(R.drawable.less);
                    isHide = false;
                } else {
//
                    mainGridview.setVisibility(view.GONE);
                    vvXian.setVisibility(view.GONE);
                    ivTranslateAnimation.setImageResource(R.drawable.more_unfold);
                    isHide = true;
                }break;
        }}/**
     * GirdView点击事件
     */
    private class mainGridviewListener implements AdapterView.OnItemClickListener {@Override
        public void onItemClick(AdapterView<?> parent, View view, int position,
                                long id) {Intent intent = new Intent(getContext(), MusicListActivity.class);
//将topid传过去
            intent.putExtra("musictype", maps.get(gridItems.get(position)));
            startActivity(intent);
        }}public void getFenlei() {maps.put(getString(R.string.msuic_fenlei_rege), 26);
        maps.put(getString(R.string.music_fenlei_gantai), 6);
        maps.put(getString(R.string.music_fenlei_Kge), 36);
        maps.put(getString(R.string.music_fenlei_liuxing), 4);
        maps.put(getString(R.string.music_fenlei_neidi), 5);
        maps.put(getString(R.string.music_fenlei_net), 28);
        maps.put(getString(R.string.music_fenlei_oumei), 3);
        maps.put(getString(R.string.music_fenlei_xingge), 27);
        maps.put(getString(R.string.music_fenlei_yinyueren), 32);
        // 热歌 26
    }@Override
    public void onDestroyView() {super.onDestroyView();
        ButterKnife.unbind(this);
    }
}

差不多就是酱紫了

0 0.。。额 剩下的我就帖MusicListActivity 的代码吧0 0适配器啊其他什么的都是和之前的一样的~

public class MusicListActivity extends BaseActivity {@Bind(R.id.tv_toolbar)TextView tvToolbar;
    @Bind(R.id.tb_main)Toolbar tbMain;
    private int typeid = 5;
    List<MusicModle> list;
    @Bind(R.id.rv_fenlei_list)RecyclerView rvFenleiList;
    MusicFenAdapter musicFenAdapter;
    private SparseArray<String> maps = new SparseArray<String>();
    @Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_music_list);
        ButterKnife.bind(this);
        initTypes();
        typeid = getIntent().getIntExtra("musictype", 5);
        setToolBar(R.id.tb_main);
      //设置榜单名为标题名字
        tvToolbar.setText(maps.get(typeid));        
        initWhiteHome();        
        Log.i("TAG", "onCreate: " + typeid);
        showProgressDialog();
        HttpUtil.requestStringData(typeid, new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {
                Log.i("TAG", "onCreate:2 " + e);
                dissmiss();            }
            @Override
            public void onResponse(Call call, Response response) throws IOException {
                musicFenAdapter = new MusicFenAdapter(MusicModleUtil.parseJOSNWithGSON(response));
//更新界面要回到主线程进行更新~
                runOnUiThread(new Runnable() {@Overridepublic void run() {rvFenleiList.setLayoutManager(new LinearLayoutManager(getBaseContext()));
                        rvFenleiList.setItemAnimator(new DefaultItemAnimator());
                        rvFenleiList.setAdapter(musicFenAdapter);
                        dissmiss();
                    }});

            }});
    }
//设置标题栏的名字为榜单private void initTypes() {maps.put(26,getString(R.string.msuic_fenlei_rege));
        maps.put(6,getString(R.string.music_fenlei_gantai));
        maps.put(36,getString(R.string.music_fenlei_Kge));
        maps.put(4,getString(R.string.music_fenlei_liuxing) );
        maps.put(5,getString(R.string.music_fenlei_neidi));
        maps.put(28,getString(R.string.music_fenlei_net));
        maps.put(3,getString(R.string.music_fenlei_oumei));
        maps.put(27,getString(R.string.music_fenlei_xingge));
        maps.put(32,getString(R.string.music_fenlei_yinyueren));
    }
}

觉得自己真的写得好没实用...有点难过了..

那个歌曲搜索其实和榜单实现差不多..

我就不写了..

只是在解析的时候记得要把页数提取出来..

直接上一下我的完整的NetFragment吧

里面的刷新用了开源库..

compile 'com.android.support:appcompat-v7:25.3.1'//版本随意
compile 'com.scwang.smartrefresh:SmartRefreshLayout:1.0.3'
compile 'com.scwang.smartrefresh:SmartRefreshHeader:1.0.3'//没有使用特殊Header,可以不加这行
public class NetFragment extends Fragment {@Bind(R.id.et_findlocal)EditText etFindlocal;
    @Bind(R.id.main_gridview)GridView mainGridview;
    @Bind(R.id.rv_net_song)RecyclerView rvNetSong;
    @Bind(R.id.iv_findNet)ImageView ivFindNet;
    @Bind(R.id.iv_translateAnimation)ImageView ivTranslateAnimation;
    @Bind(R.id.vv_xian)View vvXian;
    @Bind(R.id.rl_scroll)RelativeLayout rlScroll;
    @Bind(R.id.sr_fragment_net)SmartRefreshLayout srFragmentNet;
    private SparseArray<String> gridItems = new SparseArray<String>();
    private Map<String, Integer> maps = new HashMap<String, Integer>();
    MusicGridAdapter musicGridAdapter;
    FindMusicAdapter findMusicAdapter;
    private Dialog progressDialog;
    private boolean isHide;
    private int page = 1;
    private int totalPage;
    private String name;
//    Animation showAction, hideAction;

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {View view = inflater.inflate(R.layout.fragment_network, container, false);
        initData();
        musicGridAdapter = new MusicGridAdapter(gridItems, getContext());
        mainGridview = view.findViewById(R.id.main_gridview);
        mainGridview.setAdapter(musicGridAdapter);
        mainGridview.setOnItemClickListener(new mainGridviewListener());
        ButterKnife.bind(this, view);

        return view;
    }public void showProgressDialog() {if (progressDialog == null) {progressDialog = new Dialog(getContext(), R.style.Pro);
            progressDialog.setContentView(R.layout.dialog_loading);
            progressDialog.getWindow().setBackgroundDrawableResource(android.R.color.transparent);
            TextView msg = (TextView) progressDialog.findViewById(R.id.id_tv_loadingmsg);
            msg.setText("(σ'・д・)σ");
            progressDialog.show();
        }progressDialog.show();
    }public void initView() {srFragmentNet.setOnRefreshLoadmoreListener(new OnRefreshLoadmoreListener() {@Override
            public void onLoadmore(final RefreshLayout refreshlayout) {MusicFindUtil.getInstance().getPage();
                Log.i("totalPage2", "totalPage " + totalPage);
                page++;
                if (page<=totalPage){HttpUtil.requestSongData(name, page, new Callback() {@Override
                        public void onFailure(Call call, IOException e) {refreshlayout.finishLoadmore();
                        }@Override
                        public void onResponse(Call call, Response response) throws IOException {refreshlayout.finishLoadmore();
                            findMusicAdapter.addData(MusicFindUtil.parseJOSNWithGSON(response));
                            getActivity().runOnUiThread(new Runnable() {@Override
                                public void run() {findMusicAdapter.addDataChange();
                                 }});
                     }});
                }else {Toast.makeText(getContext(), "没有更多了~~", Toast.LENGTH_SHORT).show();
                    refreshlayout.finishLoadmore();//记得要加这个!!!结束
                }}@Override
            public void onRefresh(final RefreshLayout refreshlayout) {HttpUtil.requestSongData(name, 1, new Callback() {@Override
                    public void onFailure(Call call, IOException e) {refreshlayout.finishRefresh();
                        Log.i("TAG", "onCreate:2 " + e);
                        dissmiss();
                    }@Override
                    public void onResponse(Call call, Response response) throws IOException {refreshlayout.finishRefresh();
//记得要加这个!!!结束
                        findMusicAdapter = new FindMusicAdapter(MusicFindUtil.parseJOSNWithGSON(response), getContext());                        Log.i("TAG2", "onCreate:2 ");                        getActivity().runOnUiThread(new Runnable() {                            @Override                            public void run() {                                Log.i("TAG2", "onCreate:3 ");                                rvNetSong.setLayoutManager(new LinearLayoutManager(getContext()));                                rvNetSong.setItemAnimator(new DefaultItemAnimator());                                rvNetSong.setAdapter(findMusicAdapter);                            }                        });                    }                });            }        });    }    public void dissmiss() {        if (progressDialog != null) {            progressDialog.dismiss();        }    }    private void initData() {        gridItems.put(0, getString(R.string.msuic_fenlei_rege));        gridItems.put(1, getString(R.string.music_fenlei_gantai));        gridItems.put(2, getString(R.string.music_fenlei_Kge));        gridItems.put(3, getString(R.string.music_fenlei_liuxing));        gridItems.put(4, getString(R.string.music_fenlei_neidi));        gridItems.put(5, getString(R.string.music_fenlei_net));        gridItems.put(6, getString(R.string.music_fenlei_oumei));        gridItems.put(7, getString(R.string.music_fenlei_xingge));        gridItems.put(8, getString(R.string.music_fenlei_yinyueren));        getFenlei();    }    @OnClick({R.id.iv_findNet, R.id.iv_translateAnimation})    public void onViewClicked(View view) {        switch (view.getId()) {            case R.id.iv_findNet:                page = 1;                name = etFindlocal.getText().toString();                etFindlocal.setText("");                MusicFindUtil.getInstance().deleteDate();                showProgressDialog();                HttpUtil.requestSongData(name, 1, new Callback() {                    @Override                    public void onFailure(Call call, IOException e) {                        Log.i("TAG", "onCreate:2 " + e);                        dissmiss();                    }                    @Override                    public void onResponse(Call call, Response response) throws IOException {                        Log.i("TAG2", "onCreate:1 ");                        totalPage = MusicFindUtil.getInstance().getPage();                        Log.i("totalPage", "totalPage1 " + totalPage);                        findMusicAdapter = new FindMusicAdapter(MusicFindUtil.parseJOSNWithGSON(response), getContext());                        Log.i("TAG2", "onCreate:2 ");                        getActivity().runOnUiThread(new Runnable() {                            @Override                            public void run() {                                Log.i("TAG2", "onCreate:3 ");                                rvNetSong.setLayoutManager(new LinearLayoutManager(getContext()));                                rvNetSong.setItemAnimator(new DefaultItemAnimator());                                rvNetSong.setAdapter(findMusicAdapter);                                initView();                                srFragmentNet.setRefreshHeader(new ClassicsHeader(getContext()));                            }                        });                        dissmiss();                        Log.i("totalPage", "totalPage3 " + totalPage);                    }                });                break;            case R.id.iv_translateAnimation:                if (isHide) {//                    mainGridview.startAnimation(showAction);                    mainGridview.setVisibility(view.VISIBLE);                    vvXian.setVisibility(view.VISIBLE);                    ivTranslateAnimation.setImageResource(R.drawable.less);                    isHide = false;                } else {//                    mainGridview.startAnimation(hideAction);                    mainGridview.setVisibility(view.GONE);                    vvXian.setVisibility(view.GONE);                    ivTranslateAnimation.setImageResource(R.drawable.more_unfold);                    isHide = true;                }                break;        }    }    /**     * GirdView点击事件     */    private class mainGridviewListener implements AdapterView.OnItemClickListener {        @Override        public void onItemClick(AdapterView<?> parent, View view, int position,                                long id) {            Intent intent = new Intent(getContext(), MusicListActivity.class);            intent.putExtra("musictype", maps.get(gridItems.get(position)));            startActivity(intent);        }    }    public void getFenlei() {        maps.put(getString(R.string.msuic_fenlei_rege), 26);        maps.put(getString(R.string.music_fenlei_gantai), 6);        maps.put(getString(R.string.music_fenlei_Kge), 36);        maps.put(getString(R.string.music_fenlei_liuxing), 4);        maps.put(getString(R.string.music_fenlei_neidi), 5);        maps.put(getString(R.string.music_fenlei_net), 28);        maps.put(getString(R.string.music_fenlei_oumei), 3);        maps.put(getString(R.string.music_fenlei_xingge), 27);        maps.put(getString(R.string.music_fenlei_yinyueren), 32);        // 热歌 26    }    @Override    public void onDestroyView() {        super.onDestroyView();        ButterKnife.unbind(this);    }}

好吧。。。我真是一个不走心的人。。。。

好好加油。。。

慢慢写出好的文。。。

加油学习。。。

静心。。。

冷静。。

~o( =∩ω∩= )m

Android 超简单音乐播放器(九)搜索网络歌曲,获得热门榜单(GridView)(易源api的使用)(JSON的解析)(刷新)相关推荐

  1. Android 超简单音乐播放器(十)歌词的实现

    关于歌词 有下面这些: 歌词的获取 歌词的解析 自定义View 歌词的获取 歌词的获取分为两种,一种是从本地一种是通过网络上提供的API获取.我选择的是歌词迷的API http://api.geci. ...

  2. Android 超简单音乐播放器(三)根据歌曲名或者歌手搜索本地音乐(EditText监听)

    在MusicUtil中添加一个SearchSong的方法 public List<Song> SearchSong(String name) {List<Song> list2 ...

  3. Android 超简单音乐播放器(六)播放暂停音乐,更换播放模式,上下歌曲切换(service)

    创建service 当启动一个Service的时候,会调用该Service中的onCreate()和onStartCommand()方法. 当再次start Service,这次只有onStartCo ...

  4. android音乐播放器实现,Android实现简单音乐播放器(MediaPlayer)

    Android实现简单音乐播放器(MediaPlayer),供大家参考,具体内容如下 开发工具:Andorid Studio 1.3 运行环境:Android 4.4 KitKat 工程内容 实现一个 ...

  5. Android:简单音乐播放器,实现歌曲列表显示,播放暂停,切歌等功能

    效果截图(大作业不建议用,太简单了) 源码下载 简单音乐播放器

  6. android音乐播放器完整教程,android实现简单音乐播放器

    本文实例为大家分享了android音乐播放器的具体代码,供大家参考,具体内容如下 话不多说先上效果 前言 写这个音乐播放器实在是迫不得已.因为我们Andoird课程要求写一个音乐播放器.所以就有了此项 ...

  7. android在线音乐播放器教程,android实现简单音乐播放器

    本文实例为大家分享了android音乐播放器的具体代码,供大家参考,具体内容如下 话不多说先上效果 前言 写这个音乐播放器实在是迫不得已.因为我们Andoird课程要求写一个音乐播放器.所以就有了此项 ...

  8. 安卓java音乐播放器下一曲_Android实现简单音乐播放器(MediaPlayer)

    Android实现简单音乐播放器(MediaPlayer),供大家参考,具体内容如下 开发工具:Andorid Studio 1.3 运行环境:Android 4.4 KitKat 工程内容 实现一个 ...

  9. 安卓简单音乐播放器——上一首、下一首、暂停和停止

    安卓超简单音乐播放器 功能上一首.下一首.暂停和停止 歌曲状态控制语句: switch (control){// 播放或暂停case 1:// 原来处于没有播放状态if (status == 0x11 ...

最新文章

  1. python读写excel数据--pandas
  2. Access denied for user ‘root‘@‘localhost‘ (using password:YES) 解决方案
  3. 配置SQL Server 2005 远程连接(转)
  4. java中的model_Java程序员必看之springmvc中的Model对象在重定向中的数据
  5. 海康威视Web端视频开发
  6. Java集合总结大全--史上最强
  7. 使用mcisendstring重复播放音乐文件
  8. java下载execl优化_Java内存优化之POI Excel(二)
  9. 我的家乡html网页设计,创作一个以“我的家乡”为主题的网站
  10. 购买域名和个人网站备案流程
  11. 基于PHP+Zend Studio 13 + MYSQL+饭店预订管理系统
  12. 专注于win7官网,专注win7系统安装
  13. MySQL从删库到跑路(3):神奇的select
  14. day96 scrapy
  15. iOS小技能:iOS15适配导航条主题: 背景颜色、标题颜色
  16. windows 10环境下docker 部署RocketMq和RocketMq-Consol 控制台
  17. SIGGRAPH 2022 | 基于GAN的新动作合成
  18. re python 引擎_python 详解re模块
  19. 提升新网站优化排名,学会这三个方法就够了
  20. vue中warning_使用vue的i18n 出现很多warning提示

热门文章

  1. 什么是生命周期?Activity生命周期的三种状态
  2. SQL Server—T-SQL编程
  3. save-ps-to-svg1.0百度网盘资源
  4. Java学习路线图,内附完整Java自学视频教程+工具经验
  5. 饿了么虚拟号码可以发短信吗_饿了么隐私
  6. 国产银河麒麟系统源码安装Openvas
  7. android高德地图线路,独立路径规划-路线规划-开发指南-Android 导航SDK | 高德地图API...
  8. 翻译app上的图片文字信息提取好神奇?如何实现一个文字图片识别程序
  9. cv2,PIL,plt,tensorflow方法图片显示及plt的的plt.colorbar()的使用需要注意
  10. stata命令汇总_Stata常用命令应知应会(500条)