美文网首页
Android:APP实践:起点 -2020-06-12

Android:APP实践:起点 -2020-06-12

作者: 勇往直前888 | 来源:发表于2020-06-17 18:28 被阅读0次

创建工程

这个过程主要是定义包名,应用名字等等。

  • 菜单命令:New -> New Project... Project是很重要的一个概念,可以简单地认为,一个应用可以用一个Project来代替,就算有各终端,比如“学生端”,“老师端”,“iPad版”,“手机版”... ...

  • 选择模板,一般选择Empty Activity

企业微信截图_b1fcf263-b493-4a29-a75d-890eec6693d9.png
  • 配置工程, Config Project。这一页其实不叫重要,想应用名字,包id之类
企业微信截图_e3a130e2-91b8-4127-a8d9-ef00150a82cf.png
  • 工程是可以直接运行的,当然页面是空白的,只有一个字符“Hello World”
企业微信截图_2fa4dbd5-7570-4a75-b226-5345c6b809ef.png

程序入口

  • MultiDexApplication为基类,需要在build.gradle文件中导入这个包
企业微信截图_34814c78-720a-427e-a1bf-233faf219ace.png
  • 创建自定义的类,这里命名为CashierApplication
企业微信截图_abf79706-e6b8-408f-bbe5-9c371c95ba4b.png
  • AndroidManifest.xml中注册。
企业微信截图_f9550d90-5e13-4b33-a09d-a3d984f6b639.png
  • 在这里,可以做一些程序启动,首页展示之前的一些工作,比如第三方库初始化,获取应用实例,获取主线程Handler等工作。
package com.kjtpay.app;

import android.app.Application;
import android.os.Looper;
import androidx.multidex.MultiDexApplication;
import android.os.Handler;

/**
 * 程序入口
 */
public class CashierApplication extends MultiDexApplication {

    private static Application mInstance;
    private static Handler mHandler;

    public static Application getApplication() {
        return mInstance;
    }

    public static Handler getHandler() {
        if (null == mHandler) {
            synchronized (Handler.class) {
                mHandler = new Handler(Looper.getMainLooper());
            }
        }
        return mHandler;
    }

    @Override
    public void onCreate() {
        super.onCreate();

        // 保存实例
        mInstance = this;

        // 第三方初始化
        sdkInitial();

        // 初始化接口
        initial();
    }

    // 初始化三方库
    private void sdkInitial() {
        
    }
        
    // 初始化接口
    private void initial() {
        
    }
}

基类Activity

  • Android里的文件夹都是包,类都放在某个包里。所以文件夹的名字习惯用小写。这里新建一个名字叫base的包。菜单:File -> New -> Package;在弹出的包名里面接上base。成为com.kjtpay.app.base
企业微信截图_b206e651-b335-4e5d-a037-6da02c4e55cb.png
  • 有一些公共的内容,写在基类里面,会方便很多。

  • 这个是属于Activity的,所以采用菜单File -> New -> Activity -> Empty Activity比较方便。

企业微信截图_bf8cd38a-d497-4bcb-812c-80c14ead45d4.png
  • 一开始可以什么也没有,等有公共的需求时,再放入,比如日志,友盟统计等。

  • 由于基类不能直接使用,所以添加abstract关键字,并且从注册文件AndroidManifest.xml中删除注册信息

企业微信截图_726aa0f0-6967-47fa-ac9e-0c135b626c1e.png
package com.kjtpay.app.base;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;

/***
 *  activity 基类
 * */
public abstract class BaseActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }

    @Override
    protected void onResume() {
        super.onResume();
    }

    @Override
    protected void onPause() {
        super.onPause();
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
    }

    public boolean isLiving() {
        return (!isDestroyed() && !isFinishing());
    }
}

什么也没做,留着以后慢慢加内容

广告页

在展示首页之前,往往有些活动介绍,或者说是广告。所以,第一个展示的页面,往往不是首页,而是一般被称为splash的广告页。

  • 菜单仍然是File -> New -> Activity -> Empty Activity
企业微信截图_ae3d62f8-d508-466e-a16e-d25f9fb5d183.png
  • 点击Finish之后,展示新增的文件,询问是否加入git,一般都加的,保持默认就好。
企业微信截图_30856327-1002-4ad3-9641-b61fa1b1cbde.png
  • 设为启动页。默认的启动页已经删除,这里要重新设置一个。
企业微信截图_5547d8c6-d698-4e59-950a-0bb988945e73.png
  • 运行一下,跟默认的有点不一样了,至少字符串“Hello World”不见了。
企业微信截图_a8d1aa48-a3ae-4af6-abe8-a023406698b8.png

对于android.intent.action.MAIN和android.intent.category.LAUNCHER的理解

首页

默认生成的MainActivity只有一个Hello World字符串,大多数情况下并不符合需求。所以一般会删除,重新生成一个。

  • 和上面的一样,生成一个新的,名字叫HomeActivity的页面,作为首页。

  • 这样生成的Activity,在AndroidManifest.xml中会自动注册

企业微信截图_8560ffeb-e786-4c83-9f47-4ae6a6bac2df.png
  • 虽然名字叫“首页”,但是应用第一启动页面并不是它,所以,没有必要添加代表默认启动的语句:
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
  • 闪屏页目前是空白的,等以后有广告需求再添加内容。现在要从闪屏页跳转到首页,跳转代码放在哪里呢?
    理论上放哪都行,不过,这里还是放在首页当中,并且做成静态函数的方式,方便调用。理由很简单,从闪屏页去哪里不知道,但是作为首页,想跳过来,最低要求,只要对方给Context就可以了。这样做的好处,就是跳转代码可以集中在一个地方。
public class HomeActivity extends BaseActivity {

    private static final String SOURCE_NAME = "source_name";

    /***
     *  跳转到首页,并指明来源名字
     * */
    public static void launch(Context context, String sourceName) {
        if (null != context) {
            Intent intent = new Intent();
            intent.setClass(context, HomeActivity.class);
            intent.putExtra(SOURCE_NAME, sourceName);
            if (!(context instanceof Activity)) {
                intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            }
            context.startActivity(intent);
        }
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_home);

        // 展示来源名字
        Intent intent = getIntent();
        String  sourceName = intent.getStringExtra(SOURCE_NAME);
        Toast.makeText(HomeActivity.this, "从页面"+sourceName+"跳转过来", Toast.LENGTH_LONG).show();
    }
}
public class SplashActivity extends BaseActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_splash);

        // 跳转到首页
        HomeActivity.launch(SplashActivity.this, "闪屏广告页");
    }
}
企业微信截图_97bb20b4-cc05-47ba-a4fc-102c244754ac.png

相关文章

  • Android:APP实践:起点 -2020-06-12

    创建工程 这个过程主要是定义包名,应用名字等等。 菜单命令:New -> New Project... Proje...

  • 实用的Android开源APP

    实用的Android开源APP 从好的开源项目中可以学习到好的Android开发的最佳实践 Android App...

  • 学习资料(二)

    Android7.0适配教程,心得 App瘦身最佳实践 Android热更新方案Robust Android推送技...

  • Android插件化相关文章

    1.携程Android App插件化和动态加载实践 2.

  • android端实践openlayers离线地图

    笔者最近实践了利用openlayers在android app中实现离线地图应用,本文记录了笔者实践的思路。 an...

  • 完整app - 收藏集 - 掘金

    Android 实践:做一款新闻 APP - Android - 掘金跟代码相关的工作,大多唯手熟尔,所以这里花了...

  • Android App kotlin实践

    消费者App kotlin实践 0、引子 kotlin 的介绍https://www.kotlincn.net/ ...

  • Android组件化

    Android 得到app 彻底组件化方案实践 CC:可关联生命周期的android组件化开发框架 美团猫眼电影a...

  • 大厂一些Android文章

    爱奇艺:安卓APP崩溃捕获方案——xCrash 百度APP技术:Android H5首屏优化实践 腾讯Bugly:...

  • Android-App瘦身实践

    前言 随着app版本的更新迭代,我们的apk文件越来越大。记得11-12年的时候,一个apk也就是2MB左右,到了...

网友评论

      本文标题:Android:APP实践:起点 -2020-06-12

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