Android

分类下相关文章

Google Play 是否允许不同的应用使用相同的名字

答案是,可以的。 Google Play 应用是以 package name 为唯一标识,例如,com.sunzhongwei.my_app,而名字可以重复。 只有一种情况除外,就是对方的 APP 名字已经注册了商标保护。 起码策略 Google Play 这个规则非常人性化,因为这样你就不会纠结自己的想用的名字被别人占用了。 特别是,可以使用很多通用词。例如,大象弹钢琴。 反观,微信就很过分,不允许使用包含通用词的小程序名。 ...

阅读全文...

华为手机的分屏手势

晚上偶然发现闺女触发了我的华为手机的分屏功能,而我之前一直不知道这个功能的存在。。。现在在搞 Android 开发,有必要全面了解 Android 的特性。 于是查了一下分屏手势: 在打开一个应用时,用指关节叩击手机屏幕中间偏左,然后向右侧滑动,划成一条横线。实际效果很酷! 然后就可以看到当前打开的 APP 闪到了屏幕的上半边。 再选择下方需要打开的 APP,就可以在一个屏幕中操作两个 APP 了。 实际效果 手机分屏的使用场景 我经常在手机的备忘录里记录一些文字,但是发布时,可能要分段提交,或者再整理,这时候使用分屏操作就非常方便。 ...

阅读全文...

Debug 和 Release 版本自动切换不同的 AdMob ad unit id 配置

需求场景 由于本地开发环境调试时,不允许使用真实的 AdMob 广告 ID,只能使用 AdMob 官方提供的测试 ID。所以,带来了一个麻烦,就是每次编译 Release 版本时,需要手动将 layout 文件中的广告 ID 做手动替换。费时费力,且容易忘记。Google 了一下,找到一个非常好的解决方法。 创建不同的 source set source set 中文名暂且称为资源集合吧。 默认情况下,Android Studio 只创建了 main source set。但是,实际上,Gradle 能够自动识别 debug 和 release source set。只要你将 debug / ...

阅读全文...

Android i18n - 多语言版本

由于发现上架 Google Play 之后,中国区的 Android APP 无法显示 AdMob 广告,但是其他国家却非常正常。所以,我决定给 App 添加英文翻译,使其同时支持中文,和英文。 不同语言对应的文本文件 例如: 中文:res/values-zh/strings.xml 法语:res/values-fr/strings.xml 日语:res/values-ja/strings.xml 默认文本 res/values/strings.xml Android 系统获取文本的逻辑,在找不到对应语言的文本文件时,使用默认文本文件 最好模式是用户量最大的语言版本,但我觉得还是英语合适 ...

阅读全文...

点击 FAB 按钮新建一个 Activity

新建 activity 在对应的 package 上右键 New - Activity - Empty Activity。 通过向导新建 activity,可以自动生成 对应的 layout 文件 Manifest 声明 activity 的配置 声明 activity Manifest 配置的 application 下,与 main activity 平级新增一段 XML 配置: (如果是用上面向导的方式生成,无需手动声明) <activity android:name=".NewActivity" /> android:name 是唯一的必填属性。 ...

阅读全文...

修改 Floating Action Button 图标

使用 Android Studio 新建的 basic 页面中的 floating action button (FAB) 是个邮件图标。而我想将图标修改成加号。 使用内置的图标 默认的图标为 ic_dialog_email。 app:srcCompat="@android:drawable/ic_dialog_email" 切换到 layout 代码的 design 界面,选中 FAB 控件,修改 srcCompat 的属性。 点击右侧选择按钮 在弹出的 "Pick a Resource" 窗口中,选择 Drawable - android 中的 ...

阅读全文...

AdMob 广告不显示问题

在一个 Android App 上加上 AdMob 广告代码之后,发现广告无法显示。 现象 测试广告能够显示,但是换成正式广告,在真实 Android 设备上,广告无法显示。 第一次广告请求后多久才会开始展示广告? 官方文档: 如果应用是最近才在 AdMob 中注册的,则通常需要最多 1 小时以及若干广告请求才能建立起广告资源。正因为如此,您可能不会立即看到实际展示。 数据 AdMob 广告联盟请求次数 - 15 展示次数 - 0 匹配率 - 0% AdMob 广告显示是否依赖于 APP 上架 Google Play 第一次获得广告 ID 确实需要上架 Google Play。但是,之 ...

阅读全文...

Android App 设置 Google AdMob 广告

前提条件 需要应用先上架 Google Play. 获取 APP ID 及 广告单元 ID 登陆 AdMob 后台,https://apps.admob.com/v2/home 选择要添加 AdMob 广告的应用,打开“广告单元”菜单 添加广告单元,或者打开已有的广告单元 在实现说明中,获取应用 ID 及广告单元 ID 引入 AdMob SDK 即,Google Mobile Ads SDK 参考文档: https://developers.google.com/admob/android/quick-start?hl=zh-CN#import_the_mobile_ads_sdk 在 a ...

阅读全文...

Android 设置顶部标题栏与状态栏颜色一致

只需要将 colorPrimary 与 colorPrimaryDark 设置为相同即可。 <item name="colorPrimary">@color/colorPrimary</item> <item name="colorPrimaryDark">@color/colorPrimary</item> 但是为何 colorPrimaryDark 会代表 status bar color 呢? ...

阅读全文...

Didn't find class "android.support.v7.widget.RecyclerView" on path

在 Android Studio 3.5.3 中编译带 RecyclerView 控件的项目时,报错: Didn't find class "android.support.v7.widget.RecyclerView" on path 而我发现在 Module: app 的 build.gradle dependencies 中写的是 implementation 'androidx.recyclerview:recyclerview:1.1.0' 但是,在 layout xml 中却写的是: <android.support.v7.widget.Recycl ...

阅读全文...

Android layout 文件编译时报错 AAPT: error: unbound prefix

在 Android 项目中添加了一个 RecyclerView 子元素的 layout xml 文件。 就是一个最简单的 TextView 控件,代码如下: <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:text="TEXT" android:textSize ...

阅读全文...

Android App 广告联盟哪家合适

对比一下各家 Android App 广告联盟,看看哪家更合适。 腾讯广告 提交要嵌入广告的应用的必须是以及在应用商店已上线的应用,否则腾讯广告联盟那边审核时不给通过的。而上线国内 Android 应用商店需要软件著作权,比较麻烦。后期考虑吧。 Google Admob 国内可以正常使用,并没有被和谐。 使用说明更详细 似乎还有免费推广的功能 广告样式更简洁,清新 隐患,支付问题。国内收款不方便。 最大的问题是中文应用前期会出现 AdMob 广告不显示问题。 偶然发现,google. cn 国内可以正常访问。 百度联盟 百度联盟网页广告,收益相对 Google 低很多,10 倍以上的差距, ...

阅读全文...

自定义 Android Studio release 打包的 APK 文件名

使用 Android Studio 进行 release 打包时,默认的 APK 文件名字是 app-release.apk。 我需要把打包的 APK 发布到网站上,所以下载名称必须能够体现版本号及程序名。 Module:app 的 build.gradle 文件,android 配置字典下方加入 android.applicationVariants.all { variant -> variant.outputs.all { outputFileName = "${variant.applicationId}-${variant.versionNam ...

阅读全文...

为 Android App 添加百度移动统计

参考百度移动统计官方文档: https://mtj.baidu.com/static/userguide/book/android/sdk/online.html 接入方式确实非常便捷,只需要设置 gradle 文件即可。 unknown property 'instantRunManifestOutputDirectory' Android Studio 3.5.3,引入百度移动统计之后,编译报错 Could not get unknown property 'instantRunManifestOutputDirectory' for task ':app:processDebugMan ...

阅读全文...

Android Kotlin TextView.setText() 与 TextView.text 直接赋值的区别

我看到 Google 官方的 Kotlin 开发 Android 教程中都是使用的属性直接赋值的写法。 textView.text = "some string" 但是,查找一些网上的示例代码时,很多都是用的 setText 函数调用的写法: textView.setText("some string") 实际上两者作用是一样的,都能达到赋值的效果。 两者的区别 textView.text = "some string" 是 Kotlin 的惯用写法。基于 synthetic property textView.setText( ...

阅读全文...

近期节日

2020年04月07日 世界卫生日
2020年04月11日 世界帕金森病日
2020年04月19日 谷雨
2020年04月21日 复活节
2020年04月22日 世界地球日
2020年04月23日 世界读书日
2020年04月26日 知识产权日
2020年04月30日 佛诞
2020年04月30日 全国交通安全反思日
2020年05月01日 国际劳动节
2020年05月04日 五四青年节
2020年05月05日 立夏
查看更多节日