Android5.0 Lollipop DisplaySettings分析

1.本文是接接上一篇Setting启动分析

2.本文主要是对DisplaySettings进行分析

1.总概况

 


















本章主要分析点击左图显示,显示中图,点击互动屏保后跳转到右图的过程。

2.加载SettingsActivity

在setting中的选项为都在R.xml.dashboard_categories中,点击后会加载fragment,本次研究的DisplaySettings如下:

<dashboard-tile
                android:id="@+id/display_settings"
                android:title="@string/display_settings"
                android:fragment="com.android.settings.DisplaySettings"
                android:icon="@drawable/ic_settings_display"
                />
可知点击后会调用com.android.settings.DisplaySettings这个fragment。但是点击处理的代码在哪里呢,一般情况下可以从SettingsActivity、DashboardSummary等代码中找,但是本次点击事件的响应是在DashboardTileView类的onclick函数中。

 @Override
    public void onClick(View v) {
        if (mTile.fragment != null) {
            Utils.startWithFragment(getContext(), mTile.fragment, mTile.fragmentArguments, null, 0,
                    mTile.titleRes, mTile.getTitle(getResources()));
        } else if (mTile.intent != null) {
            getContext().startActivity(mTile.intent);
        }
    }
很明显,mTile.fragment是"com.android.settings.DisplaySettings",不是null。进入Utils.startWithFragment()函数。

public static void startWithFragment(Context context, String fragmentName, Bundle args,
            Fragment resultTo, int resultRequestCode, int titleResId,
            CharSequence title) {
        startWithFragment(context, fragmentName, args, resultTo, resultRequestCode,
                null /* titleResPackageName */, titleResId, title, false /* not a shortcut */);
    }
跳转一下
    public static void startWithFragment(Context context, String fragmentName, Bundle args,
            Fragment resultTo, int resultRequestCode, String titleResPackageName, int titleResId,
            CharSequence title, boolean isShortcut) {
        Intent intent = onBuildStartFragmentIntent(context, fragmentName, args, titleResPackageName,
                titleResId, title, isShortcut);
        if (resultTo == null) {
            context.startActivity(intent);
        } else {
            resultTo.startActivityForResult(intent, resultRequestCode);
        }
    }
先看onBuildStartFragmentIntent函数

    public static Intent onBuildStartFragmentIntent(Context context, String 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值