• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >Android > Setting 之dashboard 点击跳转流程,settingdashboard

Setting 之dashboard 点击跳转流程,settingdashboard

作者:网友 字体:[增加 减小] 来源:互联网 时间:2017-05-26

网友通过本文主要向大家介绍了dashboard,dashboard是什么意思,seagate dashboard,dashboard软件,author dashboard等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

Setting 之dashboard 点击跳转流程,settingdashboard


设置的主界面的可以通过修改xml中的dashboard_categaries.xml 文件实现,在DashboardSummary.java 文件中的rebuildUI()方法中将xml对应的实体类转换成对应的view,具体细节可以看设置源码。

一,dashboard_categaries中定义节点的样式:

 1  <!-- Wifi -->
 2         <dashboard-tile
 3             android:id="@+id/wifi_settings"
 4             android:fragment="com.android.settings.wifi.WifiSettings"
 5             android:icon="@drawable/sunmi_wifi"
 6             android:title="@string/wifi_settings_title" />
 7         <!-- 移动网络 -->
 8         <dashboard-tile
 9             android:id="@+id/mobile_net_settings"
10             android:icon="@drawable/sunmi_network"
11             android:title="@string/network_settings_title" >
12             <intent
13             android:action="android.intent.action.MAIN"
14             android:targetClass="com.android.phone.MobileNetworkSettings"
15             android:targetPackage="com.android.phone" />
16         </dashboard-tile>

 

这是设置中的wifi,和移动网络选项,一个是添加fragment ,另一个是添加intent

解析这个xml是在SettingActivity中的loadCategoriesFromResource(R.xml.dashboard_categories, categories);方法中,

二,DashboardSummary.java 文件中的rebuildUI()方法

 1 private void rebuildUI(Context context) {
 2         if (!isAdded()) {
 3             return;
 4         }
 5         final Resources res = getResources();
 6         mDashboard.removeAllViews();
 7         List<DashboardCategory> categories = ((SettingsActivity) context).getDashboardCategories(true);
 8         final int count = categories.size();
 9         for (int n = 0; n < count; n++) {
10             DashboardCategory category = categories.get(n);
11             View categoryView = mLayoutInflater.inflate(R.layout.dashboard_category, mDashboard, false);
12             TextView categoryLabel = (TextView) categoryView.findViewById(R.id.category_title);
13             categoryLabel.setText(category.getTitle(res));
14 
15             ViewGroup categoryContent = (ViewGroup) categoryView.findViewById(R.id.category_content);
16 
17             final int tilesCount = category.getTilesCount();
18             for (int i = 0; i < tilesCount; i++) {
19                 DashboardTile tile = category.getTile(i);
20                 DashboardTileView tileView = new DashboardTileView(context);
21                 updateTileView(context, res, tile, tileView.getImageView(), tileView.getTitleTextView(),
22                         tileView.getStatusTextView());
23 
24                 tileView.setTile(tile);
25                 categoryContent.addView(tileView);
26             }
27 
28             // Add the category
29             mDashboard.addView(categoryView);
30         }
31     }

 

分析源码可知rebuildui()是将xml中解析的实体类,构建成对应的view(categoryView,DashboardTileView)在这并没有看到添加点击事件,所以猜测应该写到DashboardTileView中了

三,DashboardTileView的点击事件

1 public class DashboardTileView extends FrameLayout implements View.OnClickListener 

看到这里就知道是在这里实现点击事件处理的

1  @Override
2     public void onClick(View v) {
3         if (mTile.fragment != null) {
4             Utils.startWithFragment(getContext(), mTile.fragment, mTile.fragmentArguments, null, 0,
5                     mTile.titleRes, mTile.getTitle(getResources()));
6         } else if (mTile.intent != null) {
7             getContext().startActivity(mTile.intent);
8         }
9     }

看到这里一目了然啦,可以知道fragment 优先级>intent 
再来看fragment的跳转

四,fragment的跳转细节

 1 public static void startWithFragment(Context context, String fragmentName, Bundle args,
 2             Fragment resultTo, int resultRequestCode, int titleResId,
 3             CharSequence title) {
 4         startWithFragment(context, fragmentName, args, resultTo, resultRequestCode,
 5                 null /* titleResPackageName */, titleResId, title, false /* not a shortcut */);
 6     }
 7 
 8 public static void startWithFragment(Context context, String fragmentName, Bundle args,
 9             Fragment resultTo, int resultRequestCode, String titleResPackageName, int titleResId,
10             CharSequence title, boolean isShortcut) {
11         Intent intent = onBuildStartFragmentIntent(context, fragmentName, args, titleResPackageName,
12                 titleResId, title, isShortcut);
13         if (resultTo == null) {
14             context.startActivity(intent);
15         } else {
16             resultTo.startActivityForResult(intent, resultRequestCode);
17         }
18     }



 
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • Setting 之dashboard 点击跳转流程,settingdashboard

相关文章

  • 2017-05-26Android View体系(五)从源码解析View的事件分发机制
  • 2017-05-26linux 内存性能调优
  • 2017-05-26在Android studio中进行单元测试和ui测试的分析
  • 2017-05-26org.gradle.api.internal.tasks.DefaultTaskInputs$TaskInputUnionFileCollection cannot be cast to org.gradle.api.internal.file.collections.DefaultConfigurableFileCollection,gradletaskinputs
  • 2017-05-26Android Studio导入第三方库(SlidingMenu)教程,androidslidingmenu
  • 2017-05-26Android Studio下运行开源项目9GAG遇到的问题
  • 2017-05-26EventBus初理解,EventBus理解
  • 2017-05-26一款面试复习应用源码,面试复习源码
  • 2017-05-228.3.4 Paint API之—— Xfermode与PorterDuff详解(一)
  • 2017-05-26Json解析工具的选择,Json解析工具选择

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • DrawerLayout的openDrawer()和closeDrawer()方法,drawerlayout
    • 手机安全卫士——高级工具-电话归属地查询,安全卫士归属地查询
    • 硅谷社交2--欢迎页面,硅谷社交2--
    • Install Battery Historian,batteryhistorian
    • 存储链路问题导致的RAC异常
    • TextView,iostextview
    • Android热更新开源项目Tinker集成实践总结,androidtinker
    • 关于TCP MSS的内核设置
    • 【1】Android 学习笔记 【第一个安卓程序】,android安卓
    • 点击文本改变改行背景色,弹出对话框,改行背景

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有