目的:
(1)掌握基本界面组件
(2)掌握使用Intent在Activity之间切换
(3)掌握使用Intent在Activity之间传递数据
主界面的代码:创建主界面的activity,并对底部的歌曲进行点击监听,点击后跳转到播放界面
public class MainActivity extends AppCompatActivity implements View.OnClickListener{
private ViewPager2 viewPager2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ConstraintLayout bottombar=findViewById(R.id.bottombar);
bottombar.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent=new Intent(MainActivity.this,PlayingActivity.class);
startActivity(intent);
}
});
viewPager2=findViewById(R.id.id_viewpager2);
ArrayList<Fragment> fragments=new ArrayList<>();
OnlineMusicFragment olfragment=new OnlineMusicFragment(MainActivity.this);
LocalMusicFragment lcfragment=new LocalMusicFragment(MainActivity.this);
fragments.add(lcfragment);
fragments.add(olfragment);
Button local=findViewById(R.id.localmusic);
Button online=findViewById(R.id.onlinemusic);
MyFragmentPageAdapter pageAdapter=new MyFragmentPageAdapter(getSupportFragmentManager(),getLifecycle(),fragments);
viewPager2.setAdapter(pageAdapter);
viewPager2.registerOnPageChangeCallback(new ViewPager2.OnPageChangeCallback() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
super.onPageScrolled(position, positionOffset, positionOffsetPixels);
switch (position){
case 0:
local.setTextColor(0xffffffff);
online.setTextColor(0xffd6d8da);
break;
case 1:
online.setTextColor(0xffffffff);
local.setTextColor(0xffd6d8da);
break;
}
}
@Override
public void onPageSelected(int position) {
super.onPageSelected(position);
}
@Override
public void onPageScrollStateChanged(int state) {
super.onPageScrollStateChanged(state);
}
});
local.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
viewPager2.setCurrentItem(0);
}
});
online.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
viewPager2.setCurrentItem(1);
}
});
}
@Override
public void onClick(View view) {
}
```主界面的代码:将两个fragment添加到viewpager2里,设置适配器,设置滑动监听器,设置两个按钮的点击监听事件
主界面的代码:将两个fragment添加到viewpager2里,设置适配器,设置滑动监听器,设置两个按钮的点击监听事件
public class LocalMusicFragment extends Fragment {
private static final int MEDIA_READ_REQUEST_CODE = 001;
private Context context;
private String[] projection={MediaStore.Audio.Media.ALBUM_ID,
MediaStore .Audio .Media.SIZE,
MediaStore.Audio.Media._ID,
MediaStore.Audio.Media.DATA,
MediaStore.Audio.Media.DURATION,
MediaStore.Audio.Media.TITLE,
MediaStore.Audio.Media.ARTIST,
MediaStore.Audio.Media.ALBUM};
public LocalMusicFragment(Context context) {
this.context = context;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
ActivityCompat.requestPermissions(getActivity(),new String[]{
READ_MEDIA_IMAGES,
READ_MEDIA_AUDIO,
READ_MEDIA_VIDEO
},MEDIA_READ_REQUEST_CODE);
}else{
ActivityCompat.requestPermissions( getActivity(),new String[]{
READ_EXTERNAL_STORAGE
},MEDIA_READ_REQUEST_CODE);
}
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_local_music, container, false);
RecyclerView recyclerView = view.findViewById(R.id.localmusiclist);
List<Musicdata> musicdataList = new ArrayList<>();
Cursor cursor=getContext().getContentResolver().query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,projection, MediaStore.Audio.Media.IS_MUSIC + "!= 0",null,null);
if(cursor != null) {
while (cursor.moveToNext()){
Musicdata musicdata=new Musicdata();
musicdata.setTitle(cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.TITLE)));
musicdata.setSinger(cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.ARTIST)));
musicdata.setAlbum(cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.ALBUM)));
musicdata.setDuration(cursor.getLong(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.DURATION)));
musicdata.setUrl(cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.DATA)));
musicdata.setId(cursor.getLong(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media._ID)));
musicdata.setSize(cursor.getLong(cursor.getColumnIndexOrThrow(MediaStore .Audio .Media.SIZE)));
musicdata.setAlbum_id(cursor.getLong(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.ALBUM_ID)));
Uri trackUri = ContentUris.withAppendedId(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,musicdata.getId());
MediaMetadataRetriever mmr=new MediaMetadataRetriever();
mmr.setDataSource(context,trackUri);
Bitmap bm;
if(mmr.getEmbeddedPicture()!=null){
bm= BitmapFactory.decodeByteArray(mmr.getEmbeddedPicture(), 0,mmr.getEmbeddedPicture().length);
}else {
bm=BitmapFactory.decodeResource(getResources(),R.drawable.default_cover);
}
musicdata.setBitmap(bm);
musicdataList.add(musicdata);
}
cursor.close();
}
LinearLayoutManager layoutManager = new LinearLayoutManager(getActivity());
recyclerView.setLayoutManager(layoutManager);
Localmusicadapter localmusicadapter = new Localmusicadapter(musicdataList,getActivity());
recyclerView.setAdapter(localmusicadapter);
DividerItemDecoration mDivider= new DividerItemDecoration(getActivity(),DividerItemDecoration.VERTICAL);
recyclerView.addItemDecoration(mDivider);
return view;
}