每天寫個APP_第 1 天——簡單的音樂播放器,app音樂播放器

來源:互聯網
上載者:User

每天寫個APP_第 1 天——簡單的音樂播放器,app音樂播放器
每天寫個APP——第 1 天1.寫個音樂播放器

——今天寫個“MusicPlayer” APP 即一個音樂播放器。實現簡單的音樂播放功能。^_^。
使用方法:在文字框內輸入你要聽的歌曲名字(前提是手機裡有的),然後點擊播放就可以享受音樂了!你或者會說,這也太LOW了吧!放心,你會喜歡去寫和嘗試這個應用!況且這隻是第一步!以後我們逐漸完善這個APP!

編程關鍵詞!:

  • MediaPlayer類的使用
  • Activity的生命週期
  • 如何去掉TitieBar
  • LinearLayout的使用
  • v_v你的介面設計審美觀
2.APP主介面

——是不是有種MDesign的感腳(顯然很牽強),以後會更多運用這種設計語言。關於軟體介面的設計,一定要用心,不能只重視背景程式。對於使用者體驗要求極高的移動APP,必須得花費一定的心思。當然,這和你的審美有很大的關係!!!!介面的設計需要一定的美工技術,筆者畫畫還可以,可是PS神碼的軟體還真是不熟,沒關係,這個網站很棒:easyicon

上代碼

詳細解釋請看注釋

介面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="#ff646469"    tools:context=".MainActivity">    <LinearLayout        android:layout_width="match_parent"        android:layout_height="match_parent"        android:orientation="vertical"        android:weightSum="1">        <TextView            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:layout_gravity="center"            android:paddingTop="15dp"            android:textSize="35sp"            android:textColor="#fff"            android:text="音樂播放器"/>        <TextView            android:layout_marginTop="25dp"            android:id="@+id/text_songName"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:layout_gravity="center"            android:textColor="#fff"            android:textSize="19sp"            android:text="好妹妹"/>        <ImageView            android:layout_marginTop="15dp"            android:id="@+id/image_songImage"            android:layout_width="290dp"            android:layout_height="290dp"            android:layout_gravity="center"            android:src="@drawable/cd"/>        <EditText            android:layout_gravity="center"            android:id="@+id/edit_songName"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:hint="輸入歌曲名"/>        <LinearLayout            android:layout_marginTop="30dp"            android:layout_width="match_parent"            android:layout_height="wrap_content"            android:orientation="horizontal"            >            <Button                android:id="@+id/button_pause"                android:layout_width="wrap_content"                android:layout_height="wrap_content"                android:layout_weight="3.333"                android:textColor="#ff5c5c5c"                android:text="暫停"/>            <Button                android:id="@+id/button_start"                android:layout_width="wrap_content"                android:layout_height="wrap_content"                android:layout_weight="3.333"                android:textColor="#ff5c5c5c"                android:text="播放"/>            <Button                android:id="@+id/button_stop"                android:layout_width="wrap_content"                android:layout_height="wrap_content"                android:layout_weight="3.333"                android:textColor="#ff5c5c5c"                android:text="停止"/>        </LinearLayout>    </LinearLayout></RelativeLayout>
Java代碼——MainActivity.java

MainActivity.java

package com.river.root.musicplayer;import android.app.Activity;import android.media.MediaPlayer;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.view.View;import android.view.animation.Animation;import android.view.animation.RotateAnimation;import android.widget.Button;import android.widget.EditText;import android.widget.ImageView;import android.widget.TextView;import java.io.IOException;public class MainActivity extends Activity {    private ImageView songImage;    private TextView songText;    private Button songStart;    private Button songStop;    private Button songPause;    private EditText editSongName;    private MediaPlayer musicPlayer;    private Handler handler;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        //繫結控制項        songImage=(ImageView)findViewById(R.id.image_songImage);        songText=(TextView)findViewById(R.id.text_songName);        editSongName=(EditText)findViewById(R.id.edit_songName);        songStart=(Button)findViewById(R.id.button_start);        songStop=(Button)findViewById(R.id.button_stop);        songPause=(Button)findViewById(R.id.button_pause);        //執行個體化MediaPlayer        musicPlayer= new MediaPlayer();        //為三個按鈕設定監聽器        songPause.setOnClickListener(new ButtonListener());        songStop.setOnClickListener(new ButtonListener());        songStart.setOnClickListener(new ButtonListener());    }    private class ButtonListener implements View.OnClickListener{        @Override        public void onClick(View view) {            try{                switch (view.getId()){                    case R.id.button_start:                        //檔案名稱                        String fileName=editSongName.getText().toString();                        songText.setText(fileName);                        //恢複原始介面                        if(songPause.getText().equals("繼續")){                            songPause.setText("暫停");                        }                        //重設                        musicPlayer.reset();                        //檔案路徑                        musicPlayer.setDataSource("/sdcard/netease/cloudmusic/Music/"+fileName+".mp3");                        musicPlayer.prepare();                        musicPlayer.start();                        break;                    case R.id.button_stop:                        musicPlayer.stop();                        songPause.setText("暫停");                        break;                    case R.id.button_pause:                        //注意介面的更改                        if(musicPlayer.isPlaying()){                            musicPlayer.pause();                            ((Button)view).setText("繼續");                        }else{                            musicPlayer.start();                            ((Button)view).setText("暫停");                        }                        break;                }            }catch (IOException e){                e.printStackTrace();            }        }    }    @Override    protected void onPause() {        super.onPause();        if(musicPlayer!=null){            if(musicPlayer.isPlaying())                musicPlayer.stop();        }    }    @Override    protected void onResume() {        super.onResume();        if(musicPlayer!=null){            if(musicPlayer.isPlaying())                musicPlayer.start();        }    }    @Override    protected void onDestroy() {        super.onDestroy();        if(musicPlayer!=null){            if(musicPlayer.isPlaying())                musicPlayer.stop();            musicPlayer.release();        }    }}

以上代碼不是很難,主要是MediaPlayer類的使用。但要注意介面的變化和Activity生命週期的應用。

明天的APP

實現中間圖片的旋轉,和播放進度的展示。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.