Android程序运行分析——中等复杂程度的NTAG I2C Demo为例

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_24118527/article/details/82950296

首先查看AndroidManifest.xml文件,这个是清单文件,可以简单地理解为这个APP的配置文件。

就是下图中的这个文件

这里要注意intent-filter里的代码,如图所示

            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>

这里表示SplashActivity是这个项目的主Activity,在你的手机上点击打开APP,首先启动的就是这个SplashActivity


SplashActivity

这个SplashActivity是欢迎界面或是引导界面

在SplashActivity的源代码中,可以很容易地发现,程序通过显示意图来到MainAcivity

接下来就到了MainActivity


MainActivity

先看一下MainAcitivity的XML文件,可以发现:最外层是TabHost,然后往里是一个RelativeLayout,这个相对布局是针对以下三个部分设计的,也就是:TabWidget    FrameLayout    ViewPager

MainActivity的一个重要作用就是管理Fragment的切换,我们看一下代码是怎么做的

找到ViewPager

找到TabHost

new一个适配器,并在初始化的时候将mViewPager和mTabHost通过mTabsAdpater联系起来

下面的代码用于添加一些条目,分别对用APP里的DEMO   NDEF    SPEED    CONFIG

		mTabsAdapter.addTab(
				mTabHost.newTabSpec("leds").setIndicator(
						getString(R.string.leds)), LedFragment.class, null);
		mTabsAdapter.addTab(
				mTabHost.newTabSpec("ndef").setIndicator(
						getString(R.string.ndefs)), NdefFragment.class, null);
		mTabsAdapter.addTab(
				mTabHost.newTabSpec("ntag_rf").setIndicator(
						getString(R.string.ntag_rf_text)),
				SpeedTestFragment.class, null);
		mTabsAdapter.addTab(
				mTabHost.newTabSpec("config").setIndicator(
						getString(R.string.settings)), ConfigFragment.class,
				null);

下面这段代码用于Tab之间的切换

首先当然要确保tag和reader都是非空的

并且tag和reader两者是相互连接的,才能开始后续的工作,也就是launchDemo

未完待续

猜你喜欢

转载自blog.csdn.net/qq_24118527/article/details/82950296