android音乐播放器开发_开篇

  之所以选择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音乐播放器开发_开篇_第1张图片



  主页面完成,之后就是如何获取歌曲列表,专辑列表,艺术家列表等。下一篇将说明如何实现。

  

你可能感兴趣的:(android音乐播放器开发_开篇)