一.菜谱引导界面的设计与实现

1.项目介绍

2.引导界面的设计与功能

2.1.引导界面的布局设计

2.2.引导界面的功能设计

二.代码部分

1.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:orientation="vertical"android:layout_height="match_parent"tools:context=".MainActivity"><androidx.viewpager.widget.ViewPagerandroid:id="@+id/view_pager"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_weight="1"></androidx.viewpager.widget.ViewPager><Viewandroid:layout_width="match_parent"android:layout_height="10dp"android:background="#000000"/><LinearLayoutandroid:layout_width="match_parent"android:layout_height="60dp"android:orientation="horizontal"android:background="#e5a"><RadioGroupandroid:id="@+id/radio_group"android:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal"android:weightSum="3"><RadioButtonandroid:id="@+id/radio_one"android:layout_width="wrap_content"android:layout_height="wrap_content"android:button="@null"android:drawableTop="@drawable/a"android:layout_weight="1"/><RadioButtonandroid:id="@+id/radio_two"android:layout_width="wrap_content"android:layout_height="wrap_content"android:button="@null"android:drawableTop="@drawable/b"android:layout_weight="1"/><RadioButtonandroid:id="@+id/radio_three"android:layout_width="wrap_content"android:layout_height="wrap_content"android:button="@null"android:drawableTop="@drawable/c"android:layout_weight="1"/></RadioGroup></LinearLayout>
</LinearLayout>

注意:

android studio 3.5 中 android.support.v4.view.ViewPager 升级到 androidx.viewpager.widget.ViewPager

2.  a.b.c.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"><item android:state_checked="false" android:drawable="@drawable/homepage"/><item android:state_checked="true" android:drawable="@drawable/homepage2"/>
</selector>
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_checked="false" android:drawable="@drawable/collection"/>
<item android:state_checked="true" android:drawable="@drawable/collection2"/>
</selector>
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_checked="false" android:drawable="@drawable/personalcenter"/><item android:state_checked="true" android:drawable="@drawable/personalcenter2"/>
</selector>

3. OneFragment.TwoFragment.ThreeFragment.java

package com.example.ywjcookbook;import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;public class OneFragment extends Fragment {@Nullable@Overridepublic View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {TextView textView = new TextView(container.getContext());textView.setText("第一个页面");return  textView;}
}
package com.example.ywjcookbook;import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;public class TwoFragment extends Fragment {@Nullable@Overridepublic View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {TextView textView = new TextView(container.getContext());textView.setText("第二个页面");return  textView;}
}
package com.example.ywjcookbook;import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;public class ThreeFragment extends Fragment {@Nullable@Overridepublic View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {TextView textView = new TextView(container.getContext());textView.setText("第三个页面");return  textView;}
}

4. MyFragmentAdapter.java

package com.example.ywjcookbook;import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentPagerAdapter;import java.util.List;public class MyFragmentAdapter extends FragmentPagerAdapter {//定义碎片列表private List<Fragment> fragmentList2;public MyFragmentAdapter(@NonNull FragmentManager fm,List<Fragment> fragments) {super(fm);fragmentList2 =fragments;}//构建类的构造方法,用来接收从activity页面传递过来的碎片列表@NonNull@Overridepublic Fragment getItem(int i) {return fragmentList2.get(i);}@Overridepublic int getCount() {return fragmentList2.size();}
}

5. MainActivity.java

package com.example.ywjcookbook;import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.Fragment;
import androidx.viewpager.widget.ViewPager;import android.os.Bundle;
import android.widget.RadioButton;
import android.widget.RadioGroup;import java.util.ArrayList;
import java.util.List;public class MainActivity extends AppCompatActivity {//创建相应的控件对象private ViewPager view_pager;  //创建ViewPager对象private RadioGroup radio_group; //创建单选按钮组private RadioButton radio_one; //创建“主页”按钮private RadioButton radio_two; //创建“收藏”按钮private RadioButton radio_three; //创建“个人中心”按钮//定义碎片类的实例变量以及碎片列表对象private Fragment onefragment,twofragment,threefragment;private List<Fragment> fragmentList = new ArrayList<>();private int position = 0 ;  //用于记录当前所在的页面,默认值为0表示选中第一个页面@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);initView();    //控件的绑定initData();    //将三张碎片添加到ViewPager控件中initMove();    //滑屏时导航栏按钮随之切换initOnClick();   //单击导航栏按钮,碎片跟随切换}//创建initView()方法,并在该方法中绑定控件private  void initView(){view_pager = findViewById(R.id.view_pager);radio_group = findViewById(R.id.radio_group);radio_one = findViewById(R.id.radio_one);radio_two = findViewById(R.id.radio_two);radio_three = findViewById(R.id.radio_three);}//创建initData()方法,将碎片列表通过自定义适配器绑定到ViewPager控件上private  void  initData(){//将碎片进行实例化,并且存放到碎片数组onefragment = new OneFragment();twofragment = new TwoFragment();threefragment = new ThreeFragment();fragmentList.add(onefragment);fragmentList.add(twofragment);fragmentList.add(threefragment);//创建自定义适配器的实例MyFragmentAdapter adapter = new MyFragmentAdapter(this.getSupportFragmentManager(),fragmentList);//为ViewPager控件绑定适配器view_pager.setAdapter(adapter);//导航栏默认显示第一个卡片((RadioButton)radio_group.getChildAt(position)).setChecked(true);// view_pager.setCurrentItem(0);//  radio_group.check(R.id.radio_one);}//创建initMove()方法,该方法中设定ViewPager控件的滑屏事件private  void initMove(){view_pager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {@Overridepublic void onPageScrolled(int i, float v, int i1) {}@Overridepublic void onPageSelected(int i) {((RadioButton)radio_group.getChildAt(i)).setChecked(true);}@Overridepublic void onPageScrollStateChanged(int i) {}});}//创建initOnClick()方法,在该方法中添加RadioGroup控件的单击事件private  void  initOnClick() {radio_group.setOnCheckedChangeListener((group, checkedId) -> {if (checkedId == R.id.radio_two) {position = 1;view_pager.setCurrentItem(position);} else if (checkedId == R.id.radio_three) {position = 2;view_pager.setCurrentItem(position);} else {position = 0;view_pager.setCurrentItem(position);}});}}

注意:((RadioButton)radio_group.getChildAt(position)).setChecked(true);

radio_group有几个元素就是几个,假如想在radio_group加一个view的黑杠是会报错的。

私厨菜谱app的设计与实现(一)相关推荐

  1. 私厨菜谱app的设计与实现(四)

    一.菜谱收藏界面的设计与实现 1.项目简介 2."收藏"/"取消收藏"按钮布局设计 3.1.数据库的设计 3.2.数据库的操作 4.收藏界面的布局设计 二.界面 ...

  2. 私厨菜谱app的设计与实现(五)

    一.搜索界面的设计与实现 1.搜索界面的布局设计 2.结果界面的布局设计 3.搜索界面的功能设计 二.布局代码部分 1.fragment_one.xml 补充一个搜索栏 <?xml versio ...

  3. 私厨菜谱app的设计与实现(六)

    一.个人中心的设计与实现 二.代码部分 1.fragment_three.xml <?xml version="1.0" encoding="utf-8" ...

  4. 私厨菜谱app的设计与实现(三)

    一.详情界面的功能设计 对上一篇文章的补充 1.要做到信息传输,需要序列化操作   //在JsonToBean中的所有类加上接口implements Serializable   //intent.p ...

  5. 菜谱APP源码和设计报告

    <移动互联开发> 课程作业 学 院: 班 级: 学 号: 姓 名: 日 期: 设计要求(提交文档时需删除): 1.本课程设计作为<Android 程序设计>的期末考查内容. 2 ...

  6. 计算机毕业设计ssm网上私厨到家服务平台dp28s系统+程序+源码+lw+远程部署

    计算机毕业设计ssm网上私厨到家服务平台dp28s系统+程序+源码+lw+远程部署 计算机毕业设计ssm网上私厨到家服务平台dp28s系统+程序+源码+lw+远程部署 本源码技术栈: 项目架构:B/S ...

  7. [任务书+论文+PPT+源码]基于Android与多媒体的英文学习APP的设计与实现

    第1页 毕业设计(论文)题目:基于ANDROID与多媒体技术的英文学习APP的设计与实现设计(论文)要求及原始数据(资料):1.综述国内外移动互联现状及前景:2.了解ANDROID系统,理解ANDRO ...

  8. 基于Android与多媒体的英文学习APP的设计

    毕业设计(论文)任务书 第1页 毕业设计(论文)题目:基于Android与多媒体技术的英文学习APP的设计与实现设计(论文)要求及原始数据(资料):1.综述国内外移动互联现状及前景:2.了解Andro ...

  9. 2022-2027年中国菜谱app市场竞争态势及行业投资前景预测报告

    [报告类型]产业研究 [报告格式]电子+纸介版 [出品单位]华经产业研究院 本报告由华经产业研究院重磅推出,对中国菜谱app行业的发展现状.竞争格局及市场供需形势进行了具体分析,并从行业的政策环境.经 ...

最新文章

  1. 当你打开的程序在任务栏出现两个一样的怎么办?
  2. 转:MySQL性能优化神器Explain使用分析
  3. LeetCode 213. 打家劫舍 II
  4. 【音视频安卓开发 (五)】Android中获取音视频原始数据的方法
  5. MYSQL基础十一--存储引擎
  6. 快学Scala习题解答—第三章 数组相关操作
  7. jQuery Portamento 滑动定位
  8. php getfullyear,getYear、getFullYear和getUTCFullYear三者的区别
  9. 5个让IT开发效率提高200%的工具,最后一个很实用,你用过几个
  10. app流量相对专项测试(待续)
  11. Hyperledger Fabric ./byfn.sh -m up -s couchdb Error peer0.org1 failed to join the channel
  12. OLED原理、时序和操作+自己源码程序
  13. 安卓支持AES 256加密解密
  14. 【树形DP】保镖排队
  15. 点陶极速版《隐私政策》
  16. 启动Activity的流程(Launcher中点击图标启动)
  17. CSS的浮动属性,详细学习指南
  18. 漫谈程序员系列:程序员该不该考虑初创公司
  19. 如何在Windows上下载java
  20. GP232RL与FT232RL操作区别

热门文章

  1. 人工智能,重启币圈神话!BTC ETH LTC IOST
  2. 基于LoRa网关的医院室内环境监测物联网系统
  3. 哪个品牌的儿童护眼台灯好?护眼台灯五大品牌推荐
  4. idea Debug调试快捷键
  5. Pascal Voc数据集介绍
  6. 配置Linux+Nginx+php环境搭建
  7. 驱动级键盘模拟(C#)(高手请飘过)
  8. windows 激活状况 命令查询
  9. php输出中文乱码问题
  10. nginx停止与重启