美文网首页
java后端开发学习android之路一(QMUI_Androi

java后端开发学习android之路一(QMUI_Androi

作者: front_ui | 来源:发表于2019-10-10 15:44 被阅读0次

    前提

    熟悉java语言的基础知识,了解常见的设计模式

    安卓基础知识

    建议看这个文档的第一章就够了,google出的安卓教程,了解activity、fragment和布局文件。
    官方文档翻译

    源码学习阶段

    界面UI

    建议直接学习QMUI_Android的源码的demo
    QMUI_Android
    直接在android studio里学习打开项目,找到AndroidManifest.xml这个文件,这个文件是整个项目的入口,里面定义了那个Activity是起始页面。关键代码如下:

     <application
            android:name=".QDApplication"
            android:allowBackup="true"
            android:icon="@mipmap/ic_launcher"
            android:label="@string/app_name"
            android:networkSecurityConfig="@xml/network_security_config"
            android:theme="@style/AppTheme"
            tools:ignore="AllowBackup,GoogleAppIndexingWarning"
            tools:targetApi="n">
    
            <activity
                android:name=".QDMainActivity"
                android:configChanges="orientation|keyboardHidden|screenSize"
                android:label="@string/app_name"
                android:windowSoftInputMode="stateAlwaysHidden|adjustResize"/>
            <activity
                android:name=".activity.LauncherActivity"
                android:theme="@android:style/Theme.Translucent.NoTitleBar">
                <intent-filter>
                    <action android:name="android.intent.action.MAIN"/>
                    <category android:name="android.intent.category.LAUNCHER"/>
                </intent-filter>
            </activity>
    

    QDApplication 集成了Android的基础类android.app.Application类, 定义了Application的入口,也是QMUI初始化的地方
    这个demo的入口是LauncherActivity,但是这个activity启动后就直接跳到QDMainActivity,所以开始先忽略它,直接看QDMainActivity

    @FirstFragments(
            value = {
                    HomeFragment.class,
                    QDArchTestFragment.class,
                    QDArchSurfaceTestFragment.class,
                    QDNotchHelperFragment.class,
                    QDWebExplorerFragment.class,
                    QDContinuousNestedScroll1Fragment.class
            })
    @DefaultFirstFragment(HomeFragment.class)
    @LatestVisitRecord
    public class QDMainActivity extends BaseFragmentActivity {
    
        @Override
        protected int getContextViewId() {
            return R.id.qmuidemo;
        }
    
    
        public static Intent createWebExplorerIntent(Context context, String url, String title) {
            Bundle bundle = new Bundle();
            bundle.putString(EXTRA_URL, url);
            bundle.putString(EXTRA_TITLE, title);
            return of(context, QDWebExplorerFragment.class, bundle);
        }
    
        public static Intent of(@NonNull Context context,
                                @NonNull Class<? extends QMUIFragment> firstFragment) {
            return QMUIFragmentActivity.intentOf(context, QDMainActivity.class, firstFragment);
        }
    
        public static Intent of(@NonNull Context context,
                                @NonNull Class<? extends QMUIFragment> firstFragment,
                                @Nullable Bundle fragmentArgs) {
            return QMUIFragmentActivity.intentOf(context, QDMainActivity.class, firstFragment, fragmentArgs);
        }
    }
    

    这样一看很难懂,其实关键就是上面那行注解,我找到了不用注解的版本,更容易理解

    ublic class MainActivity extends QMUIFragmentActivity {
    
    
        @Override
        protected int getContextViewId() {
            return R.id.demo;
        }
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            if (savedInstanceState == null) {
                BaseFragment fragment = new HomeFragment();
    
                getSupportFragmentManager()
                        .beginTransaction()
                        .add(getContextViewId(), fragment, fragment.getClass().getSimpleName())
                        .addToBackStack(fragment.getClass().getSimpleName())
                        .commit();
            }
        }
    
    }
    

    这样就清晰多了,这个activity其实也没干啥,就是把HomeFragment加载了进来,HomeFragmen就是你允许demo的主界面了。未完待续

    相关文章

      网友评论

          本文标题:java后端开发学习android之路一(QMUI_Androi

          本文链接:https://www.haomeiwen.com/subject/cpxapctx.html