之所以选择android音乐播放器开发,是因为这里面涉及到了android的四大核心核心组件:Activity,Service,ContentProvider,BroadCast Receiver。对于学习理解这几大组件有着非常实际意义,而且再加上网络歌曲的播放,网络部分也会涉及到,所以还是很全面的一个练手项目。
先来分析一个手机音乐播放器应该具备的基础功能,1、显示SD卡或手机内存的歌曲 2、点击歌曲开始播放 3、上一首下一首快进快推 4、扫描歌曲 等
下面开始新建一个android项目,AndroidMusicPlayer:
主页面使用GridView来实现,既方便也简单。MainActivity代码如下:
package com.android.musicplayer.activity;
import com.android.musicplayer.adapter.GridViewAdapter;
import android.os.Bundle;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.GridView;
/**
* @author Administrator
* 主页面,使用GridView
*/
public class MainActivity extends Activity {
private GridView gridView;
private Intent intent;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
gridView = (GridView) findViewById(R.id.activity_main_gridview);
gridView.setAdapter(new GridViewAdapter(this));
gridView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
switch (arg2) {
case 0:
intent = new Intent(MainActivity.this, AlbumActivity.class);
startActivity(intent);
break;
case 1:
intent = new Intent(MainActivity.this, SongsActivity.class);
startActivity(intent);
break;
case 2:
intent = new Intent(MainActivity.this, ArtistActivity.class);
startActivity(intent);
break;
case 3:
intent = new Intent(MainActivity.this, GenreActivity.class);
startActivity(intent);
break;
case 4:
intent = new Intent(MainActivity.this,
RecentlyActivity.class);
startActivity(intent);
break;
case 5:
intent = new Intent(MainActivity.this,
SettingActivity.class);
startActivity(intent);
break;
default:
break;
}
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("退出魔音");
builder.setIcon(R.drawable.dialog_alert_icon);
builder.setMessage("要退出魔音吗?")
.setPositiveButton("确定",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int which) {
finish();
}
}).setNegativeButton("取消", null).show();
}
return true;
}
} 同样的,需要使用Adapter来完成绑定,我们自定义一个Adapter继承自BaseAdapter。GridViewAdapter:/**
*
*/
package com.android.musicplayer.adapter;
import com.android.musicplayer.activity.R;
import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.GridView;
import android.widget.ImageView;
/**
* @author Administrator
* @description 主页面的adapter,用来显示gridview
*/
public class GridViewAdapter extends BaseAdapter {
private Context mContext;
private Integer[] mThumbIds = { R.drawable.albums, R.drawable.songs,
R.drawable.artists, R.drawable.genre, R.drawable.recent,
R.drawable.setting};
public GridViewAdapter(Context context) {
mContext = context;
}
/*
* @see android.widget.Adapter#getCount()
*/
@Override
public int getCount() {
return mThumbIds.length;
}
/*
* @see android.widget.Adapter#getItem(int)
*/
@Override
public Object getItem(int arg0) {
return null;
}
/*
* @see android.widget.Adapter#getItemId(int)
*/
@Override
public long getItemId(int arg0) {
return 0;
}
/*
* @see android.widget.Adapter#getView(int, android.view.View,
* android.view.ViewGroup)
*/
@Override
public View getView(int arg0, View arg1, ViewGroup arg2) {
ImageView imageView;
if (arg1 == null) {
imageView = new ImageView(mContext);
imageView.setLayoutParams(new GridView.LayoutParams(175, 175));
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
imageView.setPadding(8, 8, 8, 8);
} else {
imageView = (ImageView) arg1;
}
imageView.setImageResource(mThumbIds[arg0]);
return imageView;
}
} xml布局代码如下:<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/main_bg"
tools:context=".MainActivity" >
<GridView
android:id="@+id/activity_main_gridview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:columnWidth="90dp"
android:gravity="center"
android:horizontalSpacing="10dp"
android:numColumns="2"
android:stretchMode="columnWidth"
android:verticalSpacing="50dp" />
</RelativeLayout> 效果如下: 
主页面完成,之后就是如何获取歌曲列表,专辑列表,艺术家列表等。下一篇将说明如何实现。

本文详细介绍了如何使用Android开发一款音乐播放器,包括四大核心组件的运用及网络歌曲播放。主要内容涵盖主页面设计、GridView实现、Adapter绑定、获取歌曲列表等功能,并提供了XML布局代码和界面效果展示。
7627

被折叠的 条评论
为什么被折叠?



