引导页面

1:首页样式表
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".activity.main.GuideActivity"
    android:orientation="vertical">

    <androidx.viewpager.widget.ViewPager
        android:id="@+id/guide_viewpager"
        android:layout_width="match_parent"
        android:layout_height="200dp"
        android:background="#c7c7c7"
        android:layout_marginTop="200dp"/>


    <RadioGroup
        android:id="@+id/guide_rg"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="20dp"
        android:layout_marginLeft="150dp"
        android:orientation="horizontal"/>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="20dp"
        android:orientation="horizontal">

        <Button
            android:id="@+id/guide_to_main"
            android:layout_width="100dp"
            android:layout_height="50dp"
            android:text="进入主页"
            android:background="#00BCD4"
            android:textColor="@color/white"
            android:visibility="gone"
            android:onClick="toMain"/>

        <Button
            android:id="@+id/guide_to_net"
            android:layout_width="100dp"
            android:layout_height="50dp"
            android:text="网络设置"
            android:background="#00BCD4"
            android:textColor="@color/white"
            android:layout_marginLeft="150dp"
            android:visibility="gone"/>

    </LinearLayout>



</LinearLayout>
2:创建一个引导页面的Activity

public class    GuideActivity extends AppCompatActivity {
    private ViewPager mGuideViewpager;
    private RadioGroup mGuideRg;
    private Button mGuideToMain;
    private Button mGuideToNet;
    private int[]imgArr = {R.drawable.t1,R.drawable.t2,R.drawable.t3,R.drawable.t4,R.drawable.t5};

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_guide);
        initView();
        loadGuideView();
    }

    //设置viewpager
    public void loadGuideView(){
        SuperPages superPages = new SuperPages(imgArr.length,mGuideRg,GuideActivity.this) {
            @NonNull
            @Override
            public Object instantiateItem(@NonNull ViewGroup container, int position) {
                ImageView imageView = new ImageView(GuideActivity.this);
                imageView.setBackgroundResource(imgArr[position]);
                container.addView(imageView);
                return imageView;
            }
        };
        mGuideViewpager.setAdapter(superPages);
        mGuideRg.check(0);//默认选中第一个

        //单选按钮组
        mGuideRg.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(RadioGroup group, int checkedId) {
                mGuideViewpager.setCurrentItem(checkedId);
                if (checkedId == 4){
                    mGuideToMain.setVisibility(View.VISIBLE);
                    mGuideToNet.setVisibility(View.VISIBLE);
                }
            }
        });
        //viewpager页面改变
        mGuideViewpager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

            }

            @Override
            public void onPageSelected(int position) {
                mGuideRg.check(position);
            }

            @Override
            public void onPageScrollStateChanged(int state) {

            }
        });
    }

    //初始化视图
    public void initView(){
        mGuideViewpager = (ViewPager) findViewById(R.id.guide_viewpager);
        mGuideRg = (RadioGroup) findViewById(R.id.guide_rg);
        mGuideToMain = (Button) findViewById(R.id.guide_to_main);
        mGuideToNet = (Button) findViewById(R.id.guide_to_net);
    }

    //点击进入主页
    public void toMain(View view) {
        CacheUtils.putBoolean(GuideActivity.this, TO_MAIN);
        Intent intent = new Intent(GuideActivity.this, MainActivity.class);
        startActivity(intent);
    }
}
3:设置主界面底部导航栏的样式(activity_main.xml)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".activity.main.MainActivity"
    android:orientation="vertical">

    <androidx.viewpager.widget.ViewPager
        android:id="@+id/main_viewpager"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="9"/>

    <RadioGroup
        android:id="@+id/home_rg"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:orientation="horizontal">

        <RadioButton
            android:id="@+id/home"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:text="首 页"
            android:layout_weight="1"
            android:button="@null"
            android:background="@drawable/tool_main_normal"
            android:textColor="@color/white"
            android:textAlignment="center"
            android:drawableTop="@drawable/ic_home"/>

        <RadioButton
            android:id="@+id/all_services"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:text="全部服务"
            android:layout_weight="1"
            android:button="@null"
            android:background="@drawable/tool_main_normal"
            android:textColor="@color/white"
            android:drawableTop="@drawable/ic_home"
            android:textAlignment="center"/>

        <RadioButton
            android:id="@+id/poor"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:text="精准扶贫"
            android:layout_weight="1"
            android:button="@null"
            android:background="@drawable/tool_main_normal"
            android:textColor="@color/white"
            android:drawableTop="@drawable/ic_home"
            android:textAlignment="center"/>

        <RadioButton
            android:id="@+id/news"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:text="新 闻"
            android:layout_weight="1"
            android:button="@null"
            android:background="@drawable/tool_main_normal"
            android:textColor="@color/white"
            android:drawableTop="@drawable/ic_home"
            android:textAlignment="center"/>

        <RadioButton
            android:id="@+id/home_person"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:text="个人中心"
            android:layout_weight="1"
            android:button="@null"
            android:background="@drawable/tool_main_normal"
            android:textColor="@color/white"
            android:drawableTop="@drawable/ic_home"
            android:textAlignment="center"/>
    </RadioGroup>

</LinearLayout>
4:在主界面MainActivity(在此中要创建5个fragment)
public class MainActivity extends AppCompatActivity {

    private ViewPager mMainViewpager;
    private RadioButton mHome;
    private RadioButton mAllServices;
    private RadioButton mPoor;
    private RadioButton mNews;
    private RadioButton mHomePerson;
    private RadioGroup mHomeRg;

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

    public void initData(){
        ArrayList<Fragment> fragments = new ArrayList<>();
        fragments.add(homeFragment);
        fragments.add(allServiceFragment);
        fragments.add(poorFragment);
        fragments.add(newsFragment);
        fragments.add(personFragment);

        //绑定
        FragmentPagerAdapter fragmentPagerAdapter = new FragmentPagerAdapter(getSupportFragmentManager()) {
            @NonNull
            @Override
            public Fragment getItem(int position) {
                return fragments.get(position);
            }

            @Override
            public int getCount() {
                return fragments.size();
            }
        };
        mMainViewpager.setAdapter(fragmentPagerAdapter);
        //页面改变事件
        mMainViewpager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

            }

            @Override
            public void onPageSelected(int position) {
                mHome.setBackground(getResources().getDrawable(R.drawable.tool_main_normal));
                mAllServices.setBackground(getResources().getDrawable(R.drawable.tool_main_normal));
                mPoor.setBackground(getResources().getDrawable(R.drawable.tool_main_normal));
                mNews.setBackground(getResources().getDrawable(R.drawable.tool_main_normal));
                mHomePerson.setBackground(getResources().getDrawable(R.drawable.tool_main_normal));

                switch (position){
                    case 0:
                        mHome.setBackground(getResources().getDrawable(R.drawable.tool_main_blue));
                        break;
                    case 1:
                        mAllServices.setBackground(getResources().getDrawable(R.drawable.tool_main_blue));
                        break;
                    case 2:
                        mPoor.setBackground(getResources().getDrawable(R.drawable.tool_main_blue));
                        break;
                    case 3:
                        mNews.setBackground(getResources().getDrawable(R.drawable.tool_main_blue));
                        break;
                    case 4:
                        mHomePerson.setBackground(getResources().getDrawable(R.drawable.tool_main_blue));
                        break;
                }
            }

            @Override
            public void onPageScrollStateChanged(int state) {

            }
        });
        mHomeRg.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(RadioGroup group, int checkedId) {
                switch (checkedId){
                    case R.id.home:
                        mMainViewpager.setCurrentItem(0,true);
                        break;
                    case R.id.all_services:
                        mMainViewpager.setCurrentItem(1,true);
                        break;
                    case R.id.poor:
                        mMainViewpager.setCurrentItem(2,true);
                        break;
                    case R.id.news:
                        mMainViewpager.setCurrentItem(3,true);
                        break;
                    case R.id.home_person:
                        mMainViewpager.setCurrentItem(4,true);
                        break;
                }
            }
        });
    }

    public void initView(){
        mHomeRg = (RadioGroup) findViewById(R.id.home_rg);
        mMainViewpager = (ViewPager) findViewById(R.id.main_viewpager);
        mHome = (RadioButton) findViewById(R.id.home);
        mAllServices = (RadioButton) findViewById(R.id.all_services);
        mPoor = (RadioButton) findViewById(R.id.poor);
        mNews = (RadioButton) findViewById(R.id.news);
        mHomePerson = (RadioButton) findViewById(R.id.home_person);
    }
}
5:设置主页对应的fragment的样式表

<?xml version="1.0" encoding="utf-8"?>
<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=".fragment.home.HomeFragment"
    android:orientation="vertical"
    android:background="#E6E5E5">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:orientation="horizontal"
        android:background="#00BCD4">

        <EditText
            android:id="@+id/home_search"
            android:layout_width="250dp"
            android:layout_height="40dp"
            android:background="@drawable/bg_edt_home"
            android:hint="请输入搜索内容"
            android:textAlignment="center"
            android:textColor="@color/white"
            android:textColorHint="@color/white"
            android:layout_gravity="center"
            android:layout_marginLeft="60dp"
            android:imeOptions="actionSearch"/>

    </LinearLayout>

    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="9"
        android:padding="10dp">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical">

            <FrameLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent">

                <ProgressBar
                    android:id="@+id/load_home"
                    android:layout_width="50dp"
                    android:layout_height="50dp"
                    android:layout_gravity="center"/>

                <androidx.viewpager.widget.ViewPager
                    android:id="@+id/home_viewpager"
                    android:layout_width="match_parent"
                    android:layout_height="200dp"/>

                <RadioGroup
                    android:id="@+id/home_rg"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:orientation="horizontal"
                    android:layout_marginLeft="150dp"
                    android:layout_marginTop="180dp"/>

            </FrameLayout>

            <TextView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="应用服务"
                android:layout_marginTop="10dp"/>

            <GridView
                android:id="@+id/home_services"
                android:layout_width="match_parent"
                android:layout_height="140dp"
                android:numColumns="5"
                android:layout_marginTop="10dp"
                android:background="@drawable/bg_normal"/>

            <TextView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="热点"
                android:layout_marginTop="10dp"/>

            <GridView
                android:id="@+id/home_hot"
                android:layout_width="match_parent"
                android:layout_height="140dp"
                android:numColumns="2"
                android:layout_marginTop="10dp"
                android:background="@drawable/bg_normal"/>

            <TextView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="新闻"
                android:layout_marginTop="10dp"/>

            <com.google.android.material.tabs.TabLayout
                android:id="@+id/home_tab"
                android:layout_width="match_parent"
                android:layout_height="50dp"
                android:background="@drawable/bg_normal"
                android:layout_marginTop="10dp"/>

            <androidx.viewpager.widget.ViewPager
                android:id="@+id/home_news"
                android:layout_width="match_parent"
                android:layout_height="600dp"
                android:background="@drawable/bg_normal"
                android:layout_marginTop="10dp"/>

        </LinearLayout>
    </ScrollView>



</LinearLayout>
6:服务元素的样式表(item_home_services)

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:padding="5dp">

    <ImageView
        android:id="@+id/service_icon"
        android:layout_width="30dp"
        android:layout_height="30dp"
        android:layout_marginLeft="10dp"/>

    <TextView
        android:id="@+id/service_name"
        android:layout_width="60dp"
        android:layout_height="wrap_content" />


</LinearLayout>
7:热点元素的样式(item_hot_news)

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:padding="20dp">

    <ImageView
        android:id="@+id/hot_img"
        android:layout_width="100dp"
        android:layout_height="70dp"
        android:scaleType="fitXY"/>

    <TextView
        android:id="@+id/hot_txt"
        android:layout_width="100dp"
        android:layout_height="wrap_content"
        android:ellipsize="end"
        android:lines="1"/>

</LinearLayout>
8:回到首页的fragment

public class HomeFragment extends Fragment {
    private EditText mHomeSearch;
    private ViewPager mHomeViewpager;
    private GridView mHomeServices;
    private GridView mHomeHot;
    private TabLayout mHomeTab;
    private ViewPager mHomeNews;
    private ProgressBar load_home;
    private RadioGroup home_rg;

    Handler handler = new Handler(Looper.myLooper()) {
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            switch (msg.what) {
                case HOME_ROTATION_WHAT:
                    loadHomeRotation();
                    load_home.setVisibility(View.GONE);
                    break;
                case SERVICE_ICON_WHAT:
                    loadServicesIcon();
                    break;
                case HOT_NEWS_WHAT:
                    loadHotNews();//热点新闻
                    loadNews();//新闻列表
                    break;
                case NEWS_TYPE_WHAT:
                    newsType  = (NewsType) msg.obj;
                    break;
            }
        }
    };


    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_home, container, false);
        mHomeSearch = (EditText) view.findViewById(R.id.home_search);
        mHomeViewpager = (ViewPager) view.findViewById(R.id.home_viewpager);
        mHomeServices = (GridView) view.findViewById(R.id.home_services);
        mHomeHot = (GridView) view.findViewById(R.id.home_hot);
        mHomeTab = (TabLayout) view.findViewById(R.id.home_tab);
        mHomeNews = (ViewPager) view.findViewById(R.id.home_news);
        load_home = view.findViewById(R.id.load_home);
        home_rg = view.findViewById(R.id.home_rg);
        //绑定
        mHomeTab.setupWithViewPager(mHomeNews);
        mHomeServices.setOnItemClickListener(new servicesItemClick());
        return view;
    }

    @Override
    public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
        initData();
    }

    //初始化数据
    public void initData() {
        new initHomeHttp(handler).homeRotationData();
        new initHomeHttp(handler).servicesData();
        new initHomeHttp(handler).newsTypeData();
        new initHomeHttp(handler).newsData();
    }

    //设置页面跳转
    class servicesItemClick implements AdapterView.OnItemClickListener{

        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            switch (homeServices.getRows().get(position).getServiceName()){
                case "看电影":
                    Intent intentMovie = new Intent(getContext(), MovieActivity.class);
                    startActivity(intentMovie);
                    return;
                case "生活缴费":
                    Intent intentPay = new Intent(getContext(), LivePayActivity.class);
                    startActivity(intentPay);
                    return;
            }
            String name = homeServices.getRows().get(position).getServiceName();
            SkipActivity.skipEmptyActivity(name,getContext());
        }
    }


    //设置新闻列表
    public void loadNews(){
        List<NewsInfo.RowsDTO> rows = newsInfo.getRows();
        NewsAdapter newsAdapter = new NewsAdapter(getContext(),newsType.getData(),rows);
        mHomeNews.setAdapter(newsAdapter);
    }

    //设置热点新闻
    public void loadHotNews() {
        ArrayList<NewsInfo.RowsDTO> rowsDTOS = new ArrayList<>();
        for (int i = 0; i < newsInfo.getRows().size(); i++) {
            if (newsInfo.getRows().get(i).getHot().equals("Y")) {
                rowsDTOS.add(newsInfo.getRows().get(i));
            }
        }

        SuperBase superBase = new SuperBase(2) {
            private ImageView mHotImg;
            private TextView mHotTxt;
            @Override
            public View getView(int position, View convertView, ViewGroup parent) {
                convertView = LayoutInflater.from(getContext()).inflate(R.layout.item_hot_news,parent,false);
                mHotImg = (ImageView) convertView.findViewById(R.id.hot_img);
                mHotTxt = (TextView) convertView.findViewById(R.id.hot_txt);
                new GetNetImage(getContext(),rowsDTOS.get(position).getCover(),mHotImg);
                mHotTxt.setText(rowsDTOS.get(position).getTitle());
                return convertView;
            }
        };
        mHomeHot.setAdapter(superBase);
    }

    //设置应用服务
    public void loadServicesIcon() {
        //排序
        Collections.sort(homeServices.getRows(), new Comparator<HomeServices.RowsDTO>() {
            @Override
            public int compare(HomeServices.RowsDTO o1, HomeServices.RowsDTO o2) {
                return o2.getId() - o1.getId();
            }
        });

        SuperBase superBase = new SuperBase(10) {
            private ImageView mServiceIcon;
            private TextView mServiceName;

            @Override
            public View getView(int position, View convertView, ViewGroup parent) {
                convertView = LayoutInflater.from(getContext()).inflate(R.layout.item_home_services, parent, false);
                mServiceIcon = (ImageView) convertView.findViewById(R.id.service_icon);
                mServiceName = (TextView) convertView.findViewById(R.id.service_name);
                if (position == 0) {
                    mServiceIcon.setBackgroundResource(R.drawable.img_home3);
                } else {
                    new GetNetImage(getContext(), homeServices.getRows().get(position).getImgUrl(), mServiceIcon);
                }
                mServiceName.setText(homeServices.getRows().get(position).getServiceName());
                return convertView;
            }
        };
        mHomeServices.setAdapter(superBase);
    }

    //设置主页轮播图
    public void loadHomeRotation() {
        ArrayList<ImageView> imageViews = new ArrayList<>();
        for (int i = 0; i < homeRotationMain.getRows().size(); i++) {
            ImageView imageView = new ImageView(getContext());
            new GetNetImage(getContext(), homeRotationMain.getRows().get(i).getAdvImg(), imageView);
            imageViews.add(imageView);
        }

        SuperPages superPages = new SuperPages(imageViews.size(),home_rg,getContext()) {
            @NonNull
            @Override
            public Object instantiateItem(@NonNull ViewGroup container, int position) {
                ImageView imageView = imageViews.get(position);
                container.addView(imageView);
                return imageView;
            }
        };
        mHomeViewpager.setAdapter(superPages);
        home_rg.check(0);
        mHomeViewpager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

            }

            @Override
            public void onPageSelected(int position) {
                home_rg.check(position);
            }

            @Override
            public void onPageScrollStateChanged(int state) {

            }
        });
    }
}


版权声明:本文为m0_52625686原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。