Android-小巫新闻客户端底部菜单切换实现

2012年12月7日 星期五

真快啊,12月了,到了一年的最后一个月,意味着学期也快要结束了。小巫还在认真得学习着Android,尽管学习得不怎么样,但还是懂了些东西。因为之前一直想不明白百度新闻客户端之前版本的底部菜单是如何实现的,后来网上查了一下,原来是如此简单。所以照猫画虎也实现了自己想要的效果。其实实现起来还蛮简单的,只是小巫想了很久没想出来而已。

这里有几个关键点:

1.用TabHost布局,需要声明id为android:id="@android:id/tabhost"

2.MainActivity需要继承TabActivity

3.实现OnCheckedChangeListener

4.通过getHost方法获取Tabhost

5.通过addTab方法添加选项卡

6.设置Activity跳转需要为每个选项卡setContent

7.在onCheckedChanged监听每一个选项卡

8.选项卡通过调用setCurrentTabByTag方法实现显示Activity

项目实例:小巫新闻客户端的底部菜单实现

项目运行效果图:

   

    

创建项目:ButtonMenuTest

首先来看看界面布局:maintabs.xml

[html] view plaincopy
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <TabHost xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:id="@android:id/tabhost"
  4. android:layout_width="match_parent"
  5. android:layout_height="match_parent"
  6. android:background="@drawable/main_background">
  7. <LinearLayout
  8. android:layout_width="match_parent"
  9. android:layout_height="match_parent"
  10. android:orientation="vertical" >
  11. <FrameLayout
  12. android:id="@android:id/tabcontent"
  13. android:layout_width="match_parent"
  14. android:layout_height="0.0dip"
  15. android:layout_weight="1.0" />
  16. <TabWidget
  17. android:id="@android:id/tabs"
  18. android:layout_width="match_parent"
  19. android:layout_height="wrap_content"
  20. android:layout_weight="0.0"
  21. android:visibility="gone" />
  22. <RadioGroup
  23. android:id="@+id/main_radio"
  24. android:layout_width="match_parent"
  25. android:layout_height="wrap_content"
  26. android:layout_gravity="bottom"
  27. android:background="@drawable/image_tabbar_background"
  28. android:gravity="center_vertical"
  29. android:orientation="horizontal" >
  30. <RadioButton
  31. android:id="@+id/home_button"
  32. style="@style/main_tab_bottom"
  33. android:layout_marginTop="8.0dip"
  34. android:background="@drawable/image_tabbar_button_news_home_selector"
  35. android:tag="home_button" />
  36. <RadioButton
  37. android:id="@+id/subscribe_button"
  38. style="@style/main_tab_bottom"
  39. android:layout_marginTop="8.0dip"
  40. android:background="@drawable/image_tabbar_button_subscription_selector"
  41. android:tag="subscribe_button" />
  42. <RadioButton
  43. android:id="@+id/hotnews_button"
  44. style="@style/main_tab_bottom"
  45. android:layout_marginTop="8.0dip"
  46. android:background="@drawable/image_tabbar_button_hot_news_selector"
  47. android:tag="hotnews_button" />
  48. <RadioButton
  49. android:id="@+id/financial_button"
  50. style="@style/main_tab_bottom"
  51. android:layout_marginTop="8.0dip"
  52. android:background="@drawable/image_tabbar_button_financial_index_selector"
  53. android:tag="financial_button" />
  54. <RadioButton
  55. android:id="@+id/search_button"
  56. style="@style/main_tab_bottom"
  57. android:layout_marginTop="8.0dip"
  58. android:background="@drawable/image_tabbar_button_search_news_selector"
  59. android:tag="search_button" />
  60. </RadioGroup>
  61. </LinearLayout>
  62. </TabHost>

style代码:styles.xml

[html] view plaincopy
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <resources xmlns:android="http://schemas.android.com/apk/res/android">
  3. <style name="AppTheme" parent="android:Theme.Light" />
  4. <style name="main_tab_bottom">
  5. <item name="android:textSize">@dimen/bottom_tab_font_size</item>
  6. <item name="android:textColor">#ff0000</item>
  7. <item name="android:ellipsize">marquee</item>
  8. <item name="android:gravity">center_horizontal</item>
  9. <item name="android:paddingTop">@dimen/bottom_tab_padding_up</item>
  10. <item name="android:layout_width">match_parent</item>
  11. <item name="android:layout_height">wrap_content</item>
  12. <item name="android:button">@null</item>
  13. <item name="android:singleLine">true</item>
  14. <item name="android:drawablePadding">@dimen/bottom_tab_padding_drawable</item>
  15. <item name="android:layout_weight">1.0</item>
  16. </style>
  17. </resources>

news_home_layout.xml

[html] view plaincopy
  1. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  2. xmlns:tools="http://schemas.android.com/tools"
  3. android:id="@+id/main_layout"
  4. android:layout_width="match_parent"
  5. android:layout_height="wrap_content"
  6. android:background="@drawable/main_background"
  7. android:orientation="vertical" >
  8. <RelativeLayout
  9. android:id="@id/titlebar_layout"
  10. android:layout_width="match_parent"
  11. android:layout_height="wrap_content"
  12. android:background="@drawable/image_titlebar_background" >
  13. <TextView
  14. android:layout_width="wrap_content"
  15. android:layout_height="wrap_content"
  16. android:layout_marginLeft="10.0dip"
  17. android:layout_marginTop="9.0dip"
  18. android:text="@string/app_name"
  19. android:textColor="@color/white"
  20. android:textSize="23.0sp" />
  21. <Button
  22. android:id="@id/titlebar_refresh"
  23. android:layout_width="wrap_content"
  24. android:layout_height="wrap_content"
  25. android:layout_alignParentRight="true"
  26. android:layout_marginRight="5.0dip"
  27. android:layout_marginTop="6.0dip"
  28. android:background="@drawable/btn_titlebar_refresh_selector" />
  29. <ProgressBar
  30. android:id="@id/titlebar_progress"
  31. style="?android:attr/progressBarStyleLarge"
  32. android:layout_width="25.0dip"
  33. android:layout_height="25.0dip"
  34. android:layout_alignParentRight="true"
  35. android:layout_marginRight="14.0dip"
  36. android:layout_marginTop="10.0dip"
  37. android:clickable="false"
  38. android:visibility="gone" />
  39. </RelativeLayout>
  40. <RelativeLayout
  41. android:id="@id/categorybar_layout"
  42. android:layout_width="match_parent"
  43. android:layout_height="wrap_content"
  44. android:layout_marginTop="-16dip"
  45. android:background="@drawable/image_categorybar_background" >
  46. <Button
  47. android:id="@id/category_arrow_right"
  48. android:layout_width="6.0dip"
  49. android:layout_height="10.0dip"
  50. android:layout_alignParentRight="true"
  51. android:layout_marginRight="12dip"
  52. android:layout_marginTop="17dip"
  53. android:background="@drawable/image_categorybar_right_arrow" />
  54. </RelativeLayout>
  55. </LinearLayout>

financial_index_layout.xml

[html] view plaincopy
  1. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  2. xmlns:tools="http://schemas.android.com/tools"
  3. android:id="@+id/financial_index_layout"
  4. android:layout_width="match_parent"
  5. android:layout_height="wrap_content"
  6. android:background="@drawable/main_background"
  7. android:orientation="vertical" >
  8. <RelativeLayout
  9. android:id="@+id/titlebar_layout"
  10. android:layout_width="match_parent"
  11. android:layout_height="wrap_content"
  12. android:background="@drawable/image_titlebar_background" >
  13. <TextView
  14. android:layout_width="wrap_content"
  15. android:layout_height="wrap_content"
  16. android:layout_marginLeft="10.0dip"
  17. android:layout_marginTop="9.0dip"
  18. android:text="@string/financial_news"
  19. android:textColor="@color/white"
  20. android:textSize="23.0sp" />
  21. <Button
  22. android:id="@+id/titlebar_refresh"
  23. android:layout_width="wrap_content"
  24. android:layout_height="wrap_content"
  25. android:layout_alignParentRight="true"
  26. android:layout_marginRight="5.0dip"
  27. android:layout_marginTop="6.0dip"
  28. android:background="@drawable/btn_titlebar_refresh_selector" />
  29. <ProgressBar
  30. android:id="@+id/titlebar_progress"
  31. style="?android:attr/progressBarStyleLarge"
  32. android:layout_width="25.0dip"
  33. android:layout_height="25.0dip"
  34. android:layout_alignParentRight="true"
  35. android:layout_marginRight="14.0dip"
  36. android:layout_marginTop="10.0dip"
  37. android:clickable="false"
  38. android:visibility="gone" />
  39. </RelativeLayout>
  40. <RelativeLayout
  41. android:id="@+id/categorybar_layout"
  42. android:layout_width="match_parent"
  43. android:layout_height="wrap_content"
  44. android:layout_marginTop="-16dip"
  45. android:background="@drawable/image_categorybar_background" >
  46. <HorizontalScrollView
  47. android:id="@+id/categorybar_scrollView"
  48. android:layout_width="match_parent"
  49. android:layout_height="wrap_content"
  50. android:layout_marginLeft="8dip"
  51. android:layout_marginTop="3.0dip"
  52. android:layout_toLeftOf="@+id/category_arrow_right"
  53. android:scrollbars="none" >
  54. <LinearLayout
  55. android:id="@+id/category_layout"
  56. android:layout_width="match_parent"
  57. android:layout_height="match_parent"
  58. android:gravity="center_vertical" >
  59. </LinearLayout>
  60. </HorizontalScrollView>
  61. </RelativeLayout>
  62. <RelativeLayout
  63. android:id="@+id/financial_index_table_title_layout"
  64. android:layout_width="match_parent"
  65. android:layout_height="wrap_content"
  66. android:layout_marginTop="-10.0dip"
  67. android:background="@drawable/image_financial_index_table_title_background"
  68. >
  69. <TextView
  70. android:id="@+id/txt1"
  71. android:layout_width="wrap_content"
  72. android:layout_height="wrap_content"
  73. android:text="指数"
  74. android:textColor="#000000"
  75. android:layout_marginLeft="5.0dip"
  76. android:layout_marginTop="5.0dip"
  77. android:layout_alignParentLeft="true"
  78. />
  79. <TextView
  80. android:id="@+id/txt2"
  81. android:layout_width="wrap_content"
  82. android:layout_height="wrap_content"
  83. android:layout_toLeftOf="@+id/txt3"
  84. android:text="最新价"
  85. android:textColor="#000000"
  86. android:layout_marginRight="10.0dip"
  87. android:layout_marginTop="5.0dip"
  88. />
  89. <TextView
  90. android:id="@+id/txt3"
  91. android:layout_width="wrap_content"
  92. android:layout_height="wrap_content"
  93. android:layout_toLeftOf="@+id/txt4"
  94. android:text="涨跌额"
  95. android:textColor="#000000"
  96. android:layout_marginRight="10.0dip"
  97. android:layout_marginTop="5.0dip"
  98. />
  99. <TextView
  100. android:id="@+id/txt4"
  101. android:layout_width="wrap_content"
  102. android:layout_height="wrap_content"
  103. android:layout_alignParentRight="true"
  104. android:text="涨跌幅"
  105. android:textColor="#000000"
  106. android:layout_marginRight="15.0dip"
  107. android:layout_marginTop="5.0dip"
  108. />
  109. </RelativeLayout>
  110. </LinearLayout>

hot_news_layout.xml

[html] view plaincopy
  1. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  2. xmlns:tools="http://schemas.android.com/tools"
  3. android:id="@+id/hot_news_layout"
  4. android:layout_width="match_parent"
  5. android:layout_height="wrap_content"
  6. android:background="@drawable/main_background"
  7. android:orientation="vertical" >
  8. <RelativeLayout
  9. android:id="@id/titlebar_layout"
  10. android:layout_width="match_parent"
  11. android:layout_height="wrap_content"
  12. android:background="@drawable/image_titlebar_background" >
  13. <TextView
  14. android:layout_width="wrap_content"
  15. android:layout_height="wrap_content"
  16. android:layout_marginLeft="10.0dip"
  17. android:layout_marginTop="9.0dip"
  18. android:text="@string/hot_news"
  19. android:textColor="@color/white"
  20. android:textSize="23.0sp" />
  21. <Button
  22. android:id="@id/titlebar_refresh"
  23. android:layout_width="wrap_content"
  24. android:layout_height="wrap_content"
  25. android:layout_alignParentRight="true"
  26. android:layout_marginRight="5.0dip"
  27. android:layout_marginTop="6.0dip"
  28. android:background="@drawable/btn_titlebar_refresh_selector" />
  29. </RelativeLayout>
  30. <RelativeLayout
  31. android:id="@id/categorybar_layout"
  32. android:layout_width="match_parent"
  33. android:layout_height="wrap_content"
  34. android:layout_marginTop="-16dip"
  35. android:background="@drawable/image_categorybar_background" >
  36. </RelativeLayout>
  37. </LinearLayout>

search_news_layout.xml

[html] view plaincopy
  1. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  2. xmlns:tools="http://schemas.android.com/tools"
  3. android:id="@+id/search_news_layout"
  4. android:layout_width="match_parent"
  5. android:layout_height="wrap_content"
  6. android:background="@drawable/main_background"
  7. android:orientation="vertical" >
  8. <RelativeLayout
  9. android:id="@id/titlebar_layout"
  10. android:layout_width="match_parent"
  11. android:layout_height="wrap_content"
  12. android:background="@drawable/image_titlebar_background" >
  13. <TextView
  14. android:layout_width="wrap_content"
  15. android:layout_height="wrap_content"
  16. android:layout_marginLeft="10.0dip"
  17. android:layout_marginTop="9.0dip"
  18. android:text="@string/search_news"
  19. android:textColor="@color/white"
  20. android:textSize="23.0sp" />
  21. </RelativeLayout>
  22. <RelativeLayout
  23. android:id="@+id/searchBox_layout"
  24. android:layout_width="wrap_content"
  25. android:layout_height="wrap_content"
  26. android:background="@drawable/image_search_searchbox"
  27. android:layout_marginTop="-16.0dip"
  28. >
  29. <Button
  30. android:layout_width="wrap_content"
  31. android:layout_height="wrap_content"
  32. android:layout_alignParentRight="true"
  33. android:background="@drawable/search_button_selector"/>
  34. </RelativeLayout>
  35. </LinearLayout>

创建6个Activity:

MainActivity.java

NewsHomeActivity

SubscribeActivity.java

HotNewsActivity.java

FinancialActivity.java

SearchNewsActivty.java

源代码如下:

[java] view plaincopy
  1. package com.wwj.buttonmenu;
  2. import android.os.Bundle;
  3. import android.app.TabActivity;
  4. import android.content.Intent;
  5. import android.widget.RadioGroup;
  6. import android.widget.RadioGroup.OnCheckedChangeListener;
  7. import android.widget.TabHost;
  8. public class MainActivity extends TabActivity implements OnCheckedChangeListener{
  9. private TabHost mTabHost;
  10. private RadioGroup radioGroup;
  11. @Override
  12. protected void onCreate(Bundle savedInstanceState) {
  13. // TODO Auto-generated method stub
  14. super.onCreate(savedInstanceState);
  15. setContentView(R.layout.maintabs);
  16. // 实例化TabHost
  17. mTabHost = this.getTabHost();
  18. // 添加选项卡
  19. mTabHost.addTab(mTabHost.newTabSpec("ONE").setIndicator("ONE")
  20. .setContent(new Intent(this, NewsHomeActivity.class)));
  21. mTabHost.addTab(mTabHost.newTabSpec("TWO").setIndicator("TWO")
  22. .setContent(new Intent(this, SubscribeActivity.class)));
  23. mTabHost.addTab(mTabHost.newTabSpec("THREE").setIndicator("THREE")
  24. .setContent(new Intent(this, HotNewsActivity.class)));
  25. mTabHost.addTab(mTabHost.newTabSpec("FOUR").setIndicator("FOUR")
  26. .setContent(new Intent(this, FinancialActivity.class)));
  27. mTabHost.addTab(mTabHost.newTabSpec("FIVE").setIndicator("FIVE")
  28. .setContent(new Intent(this, SearchNewsActiity.class)));
  29. radioGroup = (RadioGroup) findViewById(R.id.main_radio);
  30. //注册监听器
  31. radioGroup.setOnCheckedChangeListener(this);
  32. }
  33. @Override
  34. public void onCheckedChanged(RadioGroup group, int checkedId) {
  35. // TODO Auto-generated method stub
  36. switch(checkedId) {
  37. case R.id.home_button:
  38. mTabHost.setCurrentTabByTag("ONE");
  39. break;
  40. case R.id.subscribe_button:
  41. mTabHost.setCurrentTabByTag("TWO");
  42. break;
  43. case R.id.hotnews_button:
  44. mTabHost.setCurrentTabByTag("THREE");
  45. break;
  46. case R.id.financial_button:
  47. mTabHost.setCurrentTabByTag("FOUR");
  48. break;
  49. case R.id.search_button:
  50. mTabHost.setCurrentTabByTag("FIVE");
  51. break;
  52. }
  53. }
  54. }
[java] view plaincopy
  1. package com.wwj.buttonmenu;
  2. import android.app.Activity;
  3. import android.os.Bundle;
  4. public class SubscribeActivity extends Activity{
  5. @Override
  6. protected void onCreate(Bundle savedInstanceState) {
  7. // TODO Auto-generated method stub
  8. super.onCreate(savedInstanceState);
  9. setContentView(R.layout.subscription_layout);
  10. }
  11. }
[java] view plaincopy
  1. package com.wwj.buttonmenu;
  2. import android.app.Activity;
  3. import android.os.Bundle;
  4. public class NewsHomeActivity extends Activity{
  5. @Override
  6. protected void onCreate(Bundle savedInstanceState) {
  7. // TODO Auto-generated method stub
  8. super.onCreate(savedInstanceState);
  9. setContentView(R.layout.news_home_layout);
  10. }
  11. }
[java] view plaincopy
  1. package com.wwj.buttonmenu;
  2. import android.app.Activity;
  3. import android.os.Bundle;
  4. public class SubscribeActivity extends Activity{
  5. @Override
  6. protected void onCreate(Bundle savedInstanceState) {
  7. // TODO Auto-generated method stub
  8. super.onCreate(savedInstanceState);
  9. setContentView(R.layout.subscription_layout);
  10. }
  11. }
[java] view plaincopy
  1. package com.wwj.buttonmenu;
  2. import android.app.Activity;
  3. import android.os.Bundle;
  4. public class HotNewsActivity extends Activity {
  5. @Override
  6. protected void onCreate(Bundle savedInstanceState) {
  7. // TODO Auto-generated method stub
  8. super.onCreate(savedInstanceState);
  9. setContentView(R.layout.hot_news_layout);
  10. }
  11. }
[java] view plaincopy
  1. package com.wwj.buttonmenu;
  2. import android.app.Activity;
  3. import android.os.Bundle;
  4. public class FinancialActivity extends Activity {
  5. @Override
  6. protected void onCreate(Bundle savedInstanceState) {
  7. // TODO Auto-generated method stub
  8. super.onCreate(savedInstanceState);
  9. setContentView(R.layout.financial_index_layout);
  10. }
  11. }
[java] view plaincopy
  1. package com.wwj.buttonmenu;
  2. import android.app.Activity;
  3. import android.content.Intent;
  4. import android.os.Bundle;
  5. import android.view.View;
  6. import android.view.View.OnClickListener;
  7. import android.widget.Button;
  8. public class SearchNewsActiity extends Activity {
  9. @Override
  10. protected void onCreate(Bundle savedInstanceState) {
  11. // TODO Auto-generated method stub
  12. super.onCreate(savedInstanceState);
  13. setContentView(R.layout.search_news_layout);
  14. }
  15. }

如果需要的源码的童鞋可以到以下地址下载:点击打开链接

小巫新闻客户端底部菜单切换实现相关推荐

  1. 基于Android小巫新闻客户端开发---显示新闻详细内容UI设计

    基于Android小巫新闻客户端开发---显示新闻详细内容UI设计 2013年2月27日,天气潮湿!!! 距上一次写的主界面业务逻辑实现,已经过来11天,小巫觉得拖得太久了,所以决定尽量把所有的内容介 ...

  2. 基于Android的小巫新闻客户端开发--UI设计(主界面)

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 基于An ...

  3. 开篇--基于Android的小巫新闻客户端开发

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 开篇-- ...

  4. 解决小程序自定义底部菜单切换闪动

    解决小程序自定义底部菜单切换闪动 业务上可能会有一个需求使用自定义底部菜单相信会有很多人遇到过这个需求 但是自定义底部菜单会有一个问题,在点击切换页面的时候底部菜单会重新加载,导致页面闪动,比较影响用 ...

  5. 微信小程序怎么添加底部菜单按钮

    继续微信小程序方面的教程,今天讲怎么在空白的小程序页面添加几个类似菜单的按钮,实现点击某个按钮跳转到对应界面,而不是单单局限于一个页面. 需要什么: 微信小程序账户 电脑一台 电脑安装微信开发者工具软 ...

  6. 微信小程序自定义tabbar底部菜单

    自定义 tabBar 可以让开发者更加灵活地设置 tabBar 样式,以满足更多个性化的场景. 在自定义 tabBar 模式下,为了保证低版本兼容以及区分哪些页面是 tab 页,tabBar 的相关配 ...

  7. android小项目之新闻客户端四

     基于Android小巫新闻客户端开发---显示新闻详细内容UI设计 2013年2月27日,天气潮湿!!! 距上一次写的主界面业务逻辑实现,已经过来11天,小巫觉得拖得太久了,所以决定尽量把所有的 ...

  8. IT_xiao小巫的面试宝典

    小巫的面试宝典 写一个专属自己的面试宝典: 小巫写这篇面试宝典,主要是为了积累经验和记录自己的求职之路.小巫并不是一种教导别人怎么去面试的心态来写这篇文章的,我只是想把自己的经历与大家分享,或许你能在 ...

  9. Android新闻客户端开发3--显示新闻详细内容UI设计

    基于Android小巫新闻客户端开发---显示新闻详细内容UI设计 2013年2月27日,天气潮湿!!! 距上一次写的主界面业务逻辑实现,已经过来11天,小巫觉得拖得太久了,所以决定尽量把所有的内容介 ...

最新文章

  1. 北京铁路局百余列普速列车将开通WiFi
  2. centos远程开机的操作
  3. django的表单系统
  4. 用计算机才能奏乐曲,计算机音乐系统和音乐听觉训练
  5. “最严”整改后的海淀黄庄 :学费收取仍有猫腻
  6. 互联网晚报 | 3月24日 星期四 |​ ​国务院安委办:立即开展民航安全隐患排查;​新东方新公司经营范围含电竞赛事策划...
  7. 有赞“小程序订阅消息”功能上线 支持商家主动推送「活动通知」
  8. go的优势--链表与结构体使用
  9. 所经历的大文件数据导出(后台执行,自动生成)
  10. java导出服务器已经配置好的excel模板
  11. Qt_ios使用本地资源图片
  12. 【Web技术】969- 如何实现高性能的在线 PDF 预览
  13. 基于STM32-ESP8266-阿里云-微信小程序的智慧舒适家庭控制系统项目
  14. python 输入框查询_前端实现输入框input输入时,调用后台查询。
  15. 基于SpringBoot体育用品购物商城-协同过滤推荐算法项目源代码
  16. ThinkPHP6.0学习入门:环境搭建与安装教程
  17. Fortify白盒神器20.1.1安装教程
  18. 24年前他被余承东招入华为,现在掌舵第四大事业群,对垒阿里张建锋、百度王海峰,腾讯汤道生...
  19. google官方图标 Material icons 全图标一览
  20. 接口测试 | 接口测试入门

热门文章

  1. 【Android 逆向】Android 权限 ( Android 逆向中使用的 android.permission 权限 | Android 系统中的 Linux 用户权限 )
  2. 【Android 逆向】Linux 文件权限 ( Linux 权限简介 | 系统权限 | 用户权限 | 匿名用户权限 | 读 | 写 | 执行 | 更改组 | 更改用户 | 粘滞 )
  3. 【Android Protobuf 序列化】Protobuf 使用 ( protobuf-gradle-plugin 插件简介 | Android Studio 中配置插件 | AS 中编译源文件 )
  4. 【鸿蒙 HarmonyOS】Ability 简介 ( 简介 | 创建应用 | Page Ability 生命周期 )
  5. 【计算机网络】计算机网络概述 : 总结 ( 概念 | 组成 | 功能 | 分类 | 性能指标 | OSI 七层参考模型 | TCP/IP 模型 | 五层参考模型 )★★★
  6. Mybatis-Plus插件配置
  7. 呆呆键盘手11.14号学到的定位-实现滚动门效果
  8. stdafx.h头文件
  9. intelliJ idea 下载安装
  10. 【转】每天一个linux命令(39):grep 命令