【达内课程】音乐播放器4.0(布局)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010356768/article/details/82785706

目标:这一节里,我们需要完成以下以下效果

activity_main
布局中放置RadioGroup和ViewPager

<LinearLayout 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"
    tools:context=".activity.MainActivity"
    android:orientation="vertical">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:text="音乐播放器"
        android:background="@color/colorPrimary"
        android:textColor="#fff"
        android:gravity="center"/>

    <RadioGroup
        android:id="@+id/radioGroup"
        android:layout_width="match_parent"
        android:layout_height="40dp"
        android:orientation="horizontal">

        <RadioButton
            android:id="@+id/radioButtonNew"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:text="新歌榜"
            android:gravity="center"
            android:checked="true"
            android:button="@null"
            android:textColor="@drawable/selector_tab"/>
        <RadioButton
            android:id="@+id/radioButtonHot"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:text="热歌榜"
            android:gravity="center"
            android:layout_weight="1"
            android:button="@null"
            android:textColor="@drawable/selector_tab"/>

    </RadioGroup>

    <android.support.v4.view.ViewPager
        android:id="@+id/viewPager"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

    </android.support.v4.view.ViewPager>

</LinearLayout>

MainActivity
初始化控件,并完成RadioGroup和ViewPager的联动

import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
import android.os.Bundle;
import android.widget.RadioButton;
import android.widget.RadioGroup;

import com.example.xx.v4.R;
import com.example.xx.v4.fragment.HotMusicListFragment;
import com.example.xx.v4.fragment.NewMusicListFragment;

import java.util.ArrayList;

public class MainActivity extends FragmentActivity {
    private RadioGroup radioGroup;
    private RadioButton radioButtonNew;
    private RadioButton radioButtonHot;
    private ViewPager viewPager;
    private ArrayList<Fragment> fragments;
    private MainPagerAdapter adapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        setViews();
        //设置ViewPager适配器
        setViewPagerAdapter();
        //设置监听
        setListeners();
    }

    private void setListeners() {
        //viewpager控制radiobutton
        viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

            }

            //当选择某一页时执行该方法
            @Override
            public void onPageSelected(int position) {
                switch (position){
                    case 0:
                        radioButtonNew.setChecked(true);
                        break;
                    case 1:
                        radioButtonHot.setChecked(true);
                        break;
                }
            }

            @Override
            public void onPageScrollStateChanged(int state) {

            }
        });
        //radiobutton控制viewpager
        radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(RadioGroup radioGroup, int i) {
                switch (i){
                    case R.id.radioButtonNew:
                        viewPager.setCurrentItem(0);
                        break;
                    case R.id.radioButtonHot:
                        viewPager.setCurrentItem(1);
                        break;
                }
            }
        });
    }

    private void setViewPagerAdapter() {
        //准备Fragment集合作为数据源
        fragments = new ArrayList<Fragment>();
        //向集合中添加两页
        fragments.add(new NewMusicListFragment());
        fragments.add(new HotMusicListFragment());
        //Activity必须继承自FragmentActivity
        adapter = new MainPagerAdapter(getSupportFragmentManager());
        viewPager.setAdapter(adapter);

    }

    private void setViews() {
        radioGroup = findViewById(R.id.radioGroup);
        radioButtonNew = findViewById(R.id.radioButtonNew);
        radioButtonHot = findViewById(R.id.radioButtonHot);
        viewPager = findViewById(R.id.viewPager);
    }

    class MainPagerAdapter extends FragmentPagerAdapter{

        public MainPagerAdapter(FragmentManager fm) {
            super(fm);
        }

        @Override
        public Fragment getItem(int position) {
            return fragments.get(position);
        }

        @Override
        public int getCount() {
            return fragments.size();
        }
    }
}

ViewPager的数据源是2个Fragment
NewMusicListFragmentHotMusicListFragment

/**
 * 新歌榜列表
 */
public class NewMusicListFragment extends Fragment {
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_music_list,null);
        return view;
    }
}
/**
 * 热歌榜列表
 */
public class HotMusicListFragment extends Fragment {
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_music_list,null);
        return view;
    }
}

drawable/selector_tab.xml

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_checked="true" android:color="@color/tab_selected"/>
    <item android:state_checked="false" android:color="@color/tab_unselected"/>
</selector>

猜你喜欢

转载自blog.csdn.net/u010356768/article/details/82785706