我是编程探索家阿源。大家如果想继续跟着学做一款APP(安卓+苹果双版本),请关注西瓜视频或者头条号:编程探索家。

先看一下我们这个系列教程需要做出来的APP效果:

1、 打开Android Studio,创建一个新工程"Create New Project",选择带有底部导航的模板"Bottom Navigation Activity",然后点击"Next"

2、 输入工程的信息,Name代表名称(后面可自行修改)Package name代表包名(每个APP的包名都是唯一的,这个确认了以后不可以修改),Save location是项目保存的目录,Language开发语言选择Kotlin,其他保留默认点击"Finish"完成创建

3、手机进入开发者模式后,通过数据线连接电脑,点击"Run app"按钮运行到手机看看效果

4、通过模板运行的APP跟设计图差别还是很大的,需要一步一步调整,本次先调整首页的Tabbar和Navigation

5、先设置好中文名称备用,一般APP里面固定的文字建议大家在res->values->strings.xml里面统一设置

6、然后在res->menu->bottom_nav_menu.xml文件下对应修改Tabbar的配置

7、然后到res->navigation->mobile_navigation.xml文件下为每个Tabbar按钮都添加对应的Fragment声明

8、然后添加每个界面对应的类文件,比较简单的方法是,到工程目录把自动生成的类文件夹复制3个,分别命名为"friends","news","mine",再修改里面的文件名和类名即可

9、然后修改复制的文件夹里面的类名称,这里我以"friends"为例说明。在res->navigation->mobile_navigation.xml里面,friends对应的Fragment定义的android:name="com.imcoder.communication.ui.friends.FriendsFragment",FriendsFragment就是friends对应的类文件的名称,此外文件夹下还有一个Model文件DashboardViewModel.kt,我们按照这个规则将其修改为FriendsViewModel.kt备用。其他的news和mine大家按照同样方法操作。

10、修改了文件名称后,还需要对应修改文件里面的内容才会生效。以friends为例,在Android Studio打开目录java->com.imcoder.communicationapp->ui->friends注意com.imcoder.communicationapp这个跟你们在开始定义的包名有关,每个人都不一样

A、 先修改FriendsFragment.kt文件,主要修改类名DashboardFragment到FriendsFragment

B、 修改引用的Model类名称,DashboardViewMode => FriendsViewModeldashboardViewModel => friendsViewModel

C、 修改界面对应的布局文件名称,fragment_dashboard => fragment_friends,R.id.text_dashboard是类里面的一个局部变量,不修改也没问题

D、 我在写文档的时候漏了,FriendsFragment.kt和FriendsViewModel.kt的第一行内容需要修改为正确的文件目录com.imcoder.communication.ui.friends

D、然后修改FriendsViewModel.kt文件,只需要修改类名即可DashboardViewModel => FriendsViewModel

按照同样的方法,把news,mine文件夹里面的都修改过来

11、然后为每个界面添加布局文件,在res->navigation->mobile_navigation.xml文件里面可以看到每个Tabbar对应的Fragment定义的布局文件

res->layout目录下,对fragment_dashboard.xml复制三份,分别命名为fragment_friends.xml,fragment_news.xml,fragment_mine.xml,然后我以fragment_friends.xml为例进行修改

修改tools:context=".ui.friends.FriendsFragment",这个的意思是当前的布局文件关联的类是ui/friends/FriendsFragment,应该创建有类然后再有布局文件,这样一一对应关系;如果你修改了FriendsFragment里面的文本ID,这里也需要对应修改,看图就明白了

12、修改每个Tabbar对应的图标,图标一类的文件建议大家放在res->drawable文件夹下,用"@drawable/图片名称"这样的方式访问,注意图标应该是.png格式的

13、现在把我们添加的Tabbar都要在工程的入口com/imcoder/communicationapp/ MainActivity.kt进行声明

14、编译看一下现在的效果(下面这张是gif动图,只是word文档好像不可以动,大家可以另存到电脑查看)

看到现在底部Tabbar跟设计图还是有区别:1、每个Tabbar的图片没有状态的切换2、Tabbar名称的文字如果没选中就没有显示了;3、Tabbar名字文字的颜色也不可以切换。接下来就解决这些问题。

15、在res->drawable文件夹下新建4个文件(名字没有要求,你们自己定)tabbar_home.xml、tabbar_friends.xml、tabbar_news.xml、tabbar_mine.xml,这4个文件是Tabbar按钮的4个图标选择器,我以tabbar_home.xml为例操作

其余3个也是这样的操作,然后到res->menu->bottom_nav_menu.xml文件修改每个Tabbar item的android:icon

16、然后需要修改Tabbar的背景颜色跟设计图一致,每个Tabbar名称即使没选中也要显示,还有Tabbar名称的状态颜色

先在res->values->colors.xml文件里面增加3个颜色值,我这里命名为tabbarBgcolor(#EEEEEE,这是Tabbar的背景颜色),tabbarOn(#3F7CF1,这是Tabbar在选中时文字的颜色),tabbarOff(#373737,这是Tabbar没选中时文字的颜色)

然后在res->drawable目录下新增tabbar_txt_color.xml(文件名你随意),这个文件的作用是声明在不同状态下的颜色选择

然后修改res->layout->activity_main.xml布局文件里面的BottomNavigationView,增加几个属性android:background="@color/tabbarBgcolor"(设置Tabbar的背景颜色),app:labelVisibilityMode="labeled"(设置在没选中时也要显示Tabbar名称),app:itemTextColor="@drawable/tabbar_txt_color"(设置Tabbar切换状态时文字的颜色)

修改以后再编译看看效果

可以看到已经跟设计图的一致了,Tabbar上的小圆点会在以后讲到相关内容的时候介绍。接下来修改头部的statusBar(状态栏)和actionBar(动作栏)

17、先修改statusBar为灰底黑字,先在res->values->colors.xml文件里面增加一个色值actionbarBgcolor(#F9F9F9,这是statusBar的背景颜色)

然后在res->values->themes->themes.xml文件增加一个属性声明android:statusBarColor="@color/actionbarBgcolor"

然后在com/imcoder/communicationapp/ MainActivity.kt里面添加一个函数changeStatusColor(setDark: Boolean),这个函数的作用是修改StatusBar的文字颜色,setDark参数如果是true,意思是文字颜色为白色,否则就是黑色

修改好了编译看看效果

18、接下来把actionBar的样式也修改成设计图的一样,这里我会使用Toolbar来代替原来的Navigation实现(Navigation实在是…..留给你们自己体会)

先把res->values->themes->themes.xml里面的主题修改成noActionBar,意思是把原来默认的actionBar去掉;然后把com/imcoder/communicationapp/MainActivity.kt里面的setupActionBarWithNavController函数(这个函数的作用是根据当前的动作设置actionBar的标题)调用注释掉

到这里如果大家重新编译就会发现,原来自带的ActionBar已经没有了。

现在添加ToolBar代替原来的ActionBar,在res->layout->activity_main.xml文件里,把整个界面给actionBar预留的高度android:paddingTop="?attr/actionBarSize"删掉,然后添加Toolbar到布局上来

现在重新编译看下效果

基本的效果已经出来了,本期视频先介绍到这里。大家如果想继续跟着学做一款APP(安卓+苹果双版本),请关注西瓜视频或者头条号:编程探索家。

没基础没关系,上面的教程你看需要基础吗~

每期视频结束请大家把操作的结果截图发在评论区,有问题可以留言或者私信给我。每期视频的源代码和教程文档请在腾讯工蜂代码仓库(https://git.code.tencent.com/Imcoder/studio.git)下载,代码仓库使用的教程请看我的视频《我家的猫和我为你讲解:Git是什么?为什么要使用代码仓库?》

下期视频内容:使用Toolbar动态设置界面标题以及右上角的工具栏

kotlin设置按钮不可点击_跟编程探索家学APP开发:设置APP首页的基础结构相关推荐

  1. kotlin设置按钮不可点击_全彩LED显示屏软件空点功能如何设置、使用?

    全彩LED显示屏的显示功能得以实现,所使用的软件功不可没.可以说是显示屏所展现的一切的效果和特性,都得归功于软件和显示屏设备.全彩LED显示屏软件空点功能如何设置.使用,你们知道吗?下面景信科技小编为 ...

  2. kotlin设置按钮不可点击_电脑护眼设置开启教程

    随着科技的进步,电脑已成为我们不可或缺的工作学习工具.对于长时间对着电脑的白领来说,如何保护眼睛成了重中之重.其实,我们电脑上早已有了护眼模式.今天小编就给大家介绍一下开启它的方法,一起来看看吧. 一 ...

  3. kotlin设置按钮不可点击_如何设置iphone手机铃声

    如何设置iphone手机铃声? 设置iphone手机铃声必须用iTunes软件,用iTunes软件将歌曲格式转换成m4r格式,才能在iphone手机里设置成铃声. 工具/原料 iTunes软件 iph ...

  4. layui设置按钮不可点击_(eblog)7、博客发布收藏、用户中心的设置

    小Hub领读: 继续我们的eblog,今天来完成博客文章收藏,用户中心的设置! 项目名称:eblog 项目 Git 仓库:https://github.com/MarkerHub/eblog(给个 s ...

  5. 设置html按钮点击事件无效果,css怎么设置按钮不能点击?

    css怎么设置按钮不能点击?下面本篇文章就来给大家介绍一下使用CSS设置按钮不能点击的方法.有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助. 想要按钮不能点击可以通过设置按钮点击事件失 ...

  6. DevExpress的图形按钮菜单栏控件WindowsUIButtonPanel的布局、使用和设置按钮的点击事件

    场景 Winform控件-DevExpress18下载安装注册以及在VS中使用: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/1 ...

  7. div搜索框与按钮不在一行_「果粉之家」搜索界的“苹果”,极简高效!

    对于绝大部分小伙伴来说,我们想要快速获取某样产品信息或者某些知识时,最先想到的就是搜索引擎.目前国内的搜索引擎有很多家,最先想到的是...答案肯定大同小异,小编就不一一列举了.但用过这些搜索引擎的小伙 ...

  8. 嵌入式编程要不要学数据结构_少儿编程要不要学?其实国家早就给出了答案……...

    随着人工智能的热度不断攀升,少儿编程越来越火,逐渐成为爸妈们的热门话题.自家的孩子适不适合学习少儿编程,很多专业人士发出了各种不同的声音.这也让很多望子成龙的家长一头雾水,分不清究竟该何去何从? 那么 ...

  9. 为什么java下载安装程序很慢_【关注】微信小程序开发和APP开发的10种区别!

    在移动互联网大火的时代,APP和微信小程序已经成为了企业从移动端获取用户流量,实现盈利的重要端口. 因为微信小程序体积小,操作方便,省去了下载安装这一操作,导致这两年微信小程序的势头是越来越猛,甚至有 ...

最新文章

  1. idea类模版,创建时生成一句歌词
  2. python自动化测试看什么书-《自动化平台测试开发-Python测试开发实战》新书出版了...
  3. 【转】The test form is only available for requests from the local machine 解决方法
  4. 下面哪项属于计算机在教育教学中的应用,东师现代教育技术18秋在线作业2答案...
  5. c语言 中多一个分号,问什么C程序里总是提示缺少分号;,而明明有分号?
  6. 2010 北大软件及微电子学院 《软件实现技术》小组博客
  7. java对象组合_java并发编程(三): 对象的组合
  8. jQuery实现滑动门效果
  9. FFT算法程序设计c语言,实数FFT算法的设计及其C语言实现
  10. C措辞教程第四章: 数组(8)
  11. js的json php无法json_decode,PHP中遇到BOM、 编码导致json_decode函数无法解析问题
  12. GNSS 常用缩略语汇总
  13. 解决谷歌浏览器:Flash插件初始化失败,请更新您的FlashPlayer版本之后重试!
  14. Latex 引号输入
  15. 微信公众号前后端分离授权登录
  16. 索骥馆-编程语言之 《C++精髓:软件工程方法》扫描版[PDF]
  17. 什么样的工作轻松又赚钱?真的有这样的工作吗?
  18. 打工人上人 (25 分)
  19. 03 计算机科学家及程序员的Windows系统使用策略完全教程
  20. 小布机器人怎么断网_小布同学智能机器人好坏判断有诀窍,三大误区要避免

热门文章

  1. BIOS的二十四个解答
  2. java漏桶算法 令牌桶算法_coding++:Semaphore—RateLimiter-漏桶算法-令牌桶算法
  3. h5同层播放器的知识
  4. 客户端请求下载,服务端响应下载请求并返回文件流
  5. 计算机简介(学习Python准备)
  6. Word插入公式行距变大解决办法
  7. 朋友过生日,用Python给她画了个生日蛋糕
  8. 软件测试文本比较工具
  9. VSCode如何设置终端工作目录
  10. 荣耀9如何调试为android测试机,荣耀V9/荣耀9开启Android8.0/EMUI8.0限量测试