ArrayList 로 선택한 노래만 팝업 메뉴로 만드는 방법을 구현하고 적어둔다.
팝업은 API 레벨 11 이상에서만 사용할 수 있다.
PopupMenu(Context context, View anchor)
- 두번째 인수는 팝업 메뉴를 표시할 앵커 뷰를 지정
popupMenu.getMenu().add(group_id, item_id, order, "노래타이틀");
popupMenu.getMenu().add(Menu.NONE, i, Menu.NONE, list.get(i).getTitle());
Menu.NONE 대신에 0 을 넣어도 된다.
//import android.support.v7.widget.PopupMenu; // ==> 이줄 추가하면 에러 발생함
import android.widget.PopupMenu; // ==> 에러 발생 안함
import android.view.Menu;
import android.view.MenuItem;
//import android.support.v7.widget.PopupMenu; import android.widget.PopupMenu; import android.view.Menu; import android.view.MenuItem;
public class Player extends AppCompatActivity implements View.OnClickListener { private ImageButton btnPlaylist;
private ArrayList<Song_Item> list; private MediaPlayer mediaPlayer; private int position = 0; // 현재 재생곡 위치
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_player);
Intent intent = getIntent(); list =(ArrayList<Song_Item>) intent.getSerializableExtra("playList"); mediaPlayer = new MediaPlayer();
// All player buttons btnPlaylist = (ImageButton) findViewById(R.id.btnPlaylist);
btnPlaylist.setOnClickListener(this); // 곡 선택창
System.out.println("선택된 노래곡수 = " + list.size()); playMusic(list.get(position)); // 노래 곡 seekBar_Progressing(); }
public void onClick(View v) { switch (v.getId()){ case R.id.btnPlaylist: // 팝업 메뉴 나오게 하는 방법 PopupMenu popupMenu = new PopupMenu(this, v); Menu menu = popupMenu.getMenu(); for(int i=0; i < list.size();i++){ //Popup Menu에 들어갈 MenuItem 추가
menu.add(0,i,0,list.get(i).getTitle()); } //메뉴가 클릭했을때 처리하는 부분
popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() { @Override public boolean onMenuItemClick(MenuItem item) { int i = item.getItemId(); Toast.makeText(Player.this, item.getTitle() + " 선택했습니다", Toast.LENGTH_SHORT).show(); playMusic(list.get(i)); // 노래 곡 return true; } }); popupMenu.show(); break; } }
public void playMusic(Song_Item song_item) { try { seek_bar.setProgress(0); songTitleLabel.setText(song_item.getTitle()); mediaPlayer.reset(); mediaPlayer.setDataSource(song_item.getDataPath()); mediaPlayer.prepare(); mediaPlayer.start(); // 노래 재생 시작
seek_bar.setMax(mediaPlayer.getDuration()); // 음악파일의 전체길이 seek_bar.setProgress(mediaPlayer.getCurrentPosition()); if(mediaPlayer.isPlaying()){ btnPlay.setVisibility(View.GONE); btnPause.setVisibility(View.VISIBLE); } else { btnPlay.setVisibility(View.VISIBLE); btnPause.setVisibility(View.GONE); }
/* Album Art Bitmap을 얻는다. */ final Uri artworkUri = Uri.parse("content://media/external/audio/albumart"); ImageView mImgAlbumArt = (ImageView) findViewById(R.id.albumart); Uri albumArtUri = ContentUris.withAppendedId(artworkUri, song_item.getAlbumId()); Picasso.with(Player.this) .load(albumArtUri) .resize(800,800) .into(mImgAlbumArt);
} catch (IOException e) { e.getMessage(); Toast.makeText(Player.this, "Error!!", Toast.LENGTH_SHORT).show(); } } }
|
미리 정해진 xml 을 메뉴로 만드는 방법
https://www.tutlane.com/tutorial/android/android-popup-menu-with-examples
https://www.javatpoint.com/android-popup-menu-example 를 참조하면 도움된다.