最近在公司做一个项目,需要把Android界面打包进jar包给客户使用。对绝大部分开发者来说,Android界面的布局以XML文件为主,并辅以少量Java代码进行动态调整。而打包进jar包的代码,意味着无法通过常规的getResources(),getString()等方法来快速的获取资源,因为这些资源都是在apk安装的时候初始化生成的。为了满足客户的需求,笔者开始在网上寻找各种解决方案。结果如下:
通常情况下,在Activity中使用setContentView()方法来设置一个布局,在调用该方法后,布局内容才真正显示出来。下面来看一下Android界面的架构图,如下图所示。
xamarin.forms的tabpage在android平台上一直以来都是把tabpage显示在顶部,造成ios,android界面表现不一致,很是恼火。不过随着xamarin 3.1的推出官方提供了tabpage底部显示的接口。具体接口如下(简书不能贴代码?直接截图了。):
DSL并不是单独为Kotlin语言提供的,可能你并知道DSL是什么,但是我敢说,只要你是Android开发者,你就一定使用过并且一直在使用DSL,那么到底什么是DSL?使用DSL又可以实现怎么样的功能呢?
在2014年的I/O大会上,谷歌推出了Material Design。但一直以来,设计师们各行其是。今天一起来看谷歌官方的设计规范。 谷歌推出了全新的设计语言Material Design。谷歌表示,
随着 Android 应用规模不断扩大,适当使用架构设计代码变得十分重要,以此实现应用 扩展,改善其 质量 和 稳健性,并让其更 易于测试。
在刚过去的一周里Google公布了第一个预览版的Flutter, Flutter 的首个「发布预览版」全球发布 如果你接触过React-Native的话,Flutter是一个跟RN差不多的框架。 它支持跨平台运行,一次开发,就可以在Android和IOS上同时运行。
物联网时代,就是要有所“变革”。而我理解的“变革”一词,有两层含义,“改变”和“革命”。一是要有所改变,不能守旧。守旧就是退步,就会逐渐跟不让步伐。二是要敢于改变,敢于坚持,敢于尝试新事物,排除非议,即敢于“革命”。
前段时间写了一些介绍MVI架构的文章,不过软件开发上没有最好的架构,只有最合适的架构,同时众所周知,Google推荐的是MVVM架构。相信很多人都会有疑问,我为什么不使用官方推荐的MVVM,而要用你说的这个什么MVI架构呢?
去年10月底换到了新公司,做移动研发组的负责人,刚开始接手android项目时,发现该项目真的是一团糟。首先是其架构,是按功能模块进行划分的,本来按模块划分也挺好的,可是,他却分得太细,总共分为了17个模块,而好几个模块也就只有两三个类而已。但应用本身其实比较简单,要按功能模块来分的话,最多五个模块就够了。另外,有好多模块划分也很模糊,也有很多类按其功能其实可以属于多个模块的,也有些类定义不明确,做了不该做的事。有时候,我要找一个界面的Activity,按照其功能应该属于A模块的,可是在A模块里却找不到,于是,我只好去AndroidManifest文件里找了,找到才发现原来在B模块里。也有时候,我要找另一个界面的Activity,可我看遍了所有模块,也没看出这个界面应该属于哪个模块,没法子,又只能去AndroidManifest文件里找了,找到才发现竟然在C模块里。代码也是又乱又臭,导致出现一大堆bug又不好找,改好一个bug又出现另一个。整个项目从架构到代码都是又臭又乱,开发人员只是不停地改bug,根本没法做新功能,更别谈扩展了。当时,公司已经有为不同客户定制化app的需求,而现有的架构完全无法满足这样的需求。因此,我决定重构,搭建一个易维护、易扩展、可定制的项目。
动态的绘制图形,需要使用到invalidate和postInvalidate函数,本次我们使用的是:
之前自己编译过Android系统,刷入手机。编译很简单,但坑比较大,主要是GFW埋的坑。。
跨平台移动应用开发框架Xamarin可以让你完全用C#编写你的应用程序,在iOS、Android、Windows Phone 8、Windows8和mac平台上共享相同的代码。你可以重用你最喜欢的.NET库,而且还很容易地使用平台特定的库和框架。Xamarin提供了高性能编译的代码和完全访问所有本地API。所以Objective-C和Java能干的事,Xamarin的C#平台工具一样可以出色完成。 Xamarin 在5月28日发布了Xamarin 3,主要有四个重要的变化。 首先,他们有了一个坚实的iOS界
试读文档下载地址:http://pan.baidu.com/s/1jGEHhhO 密码:vcfm
1、android:layout_gravity是设置该控件相对于父容器对齐方式; 2、android:gravity是设置子元素在该容器内的对齐方式。 3、layout_gravity和gravity可以设置的值:top、bottom、left、right、center_vertical、fill_vertical、center_horizontal、fill_horizontal、center、fill、clip_vertical。(一个属性可以包含多个值,需用 “|” 分开),其具体作用如下:
1.创建一个Android项目,点击File ->New->New Project,
频繁的时候可能一个 Activity或者 Fragment要出现十几行的 findViewById…
因此使用java或是kottin开发Android应用是自然的,是原生的应用且速度也是很快的。
可以说,“互联网+”和“物联网”时代的兴起,以用户为中心、以人为本的设计理念越来越得到大家的重视。
iPhone 4 可安装 Android 实现双系统启动iPhone 4 可安装 Android 实现双系统启动 苹果的 iOS 以其封闭性而著称 相比 Android 这种开放性系统 iOS 很难移植到其他设备上 不过 Android 就已经成功的入侵到 iPhone 手机之中 使用 iPhoDroid 工具就可以很容易的将 iPhone 变成一部 iOS 和 Android 双系统启动设备 近日这款工具再次进行升级 对安装步骤进行了大幅度优化并抛弃了电 脑的支持 用户只需操作手机就可以完成整个过程 目前 iPhoDroid 支持的机型有安装 3 1 2 和 3 1 3 的 iPhone 以及 3 1 2 以上系统的 iPhone 3G 手 机必须使用 PwnageTool 红雪 黑雨越狱工具完成越狱 首先需要在Cydia中添加http repo neonkoala co uk链接 然后寻找并安装Bootlace 成功安装之 后会看到桌面上出现Bootlace图标 打开Bootlace然后安装OpeniBoot 打开之后点击iDroid并进行安装 在iDroid安装完成之后 iPhone 就可以成为一部双启动手机 用户可以使用电源键或 Bootlace 应用选择重启手机 然后点击 QuickBoot 按钮 选择 Android 图标即可进入 Android 系统 安装视频教程 安装视频教程 iPhone 2G 3G 安装 AndroidiPhone 2G 3G 安装 Android 2 22 2 这是一篇翻译的文章 我是第一次看到可以在iphone 或者ipod touch上安装android系统 但是google一 下 发现很多 图文教程 但是这篇文章介绍的方法和目前的不太一样 那就是不需要连接电脑 而是 直接通过你的掌上设备的Cydia来安装 所以还是介绍一下 E文好的直接看原文原文 也许在你的 iphone 2G 3G 当然 老的 ipod touch 也是可以的 上安装 android 系统的方式是通过之前 介绍过的 iPhoDroid 但问题是你需要电脑来完成整个安装的过程 但是感谢 Bootlace 2 1 的出现 现在 你不需要连接任何 PC 或者 MAC 也可以在你的 iphone 2G 3G 上安装 Android 2 2 1 Froyo 了 准备工作 首先 需要注意的是 Bootlace 2 1 仅仅适用于以下版本的 iOS 1 iPhone 2G 上的 iOS 3 1 2 和 3 1 3 2 iPhone 3G 上的 iOS 3 1 2 3 1 3 4 0 4 0 1 4 0 2 和 4 1 其次 Bootlace 2 1 支持的越狱工具有 PwnageTool Redsn0w Blackra1n 如果你满足以上的条件 那么就可以使用下面的方法进行安装 否则 不要轻易尝试 安装方法
最近在项目中遇到了一个问题,menu-bar 希望始终显示在最上面,而在之后的元素都显示在它之下,当时设置了 z-index 也没有效果,不知道什么原因。
做 Android 开发的都知道一个规矩:布局文件的界面层级要尽量地少,越少越好,因为层级的增加会大幅拖慢界面的加载。这种拖慢的主要原因就在于各种 Layout 的重复测量。虽然重复测量对于布局过程是必不可少的,但这也确实让界面层级的数量对加载时间的影响变成了指数级。而 Jetpack Compose 是不怕层级嵌套的,因为它从根源上解决了这种问题。它解决的方式也非常巧妙而简单——它不许重复测量。
欢迎界面想做出广告页自动轮播的效果,图片切换的方式用淡入淡出的方式。这个在h5页面很容易就实现了,但是在android界面中,很容易就想到了动画animation动画来实现,但是发现使用动画的话,这种方式看起来不会自然,因为在调用statAnimation的时候因为图片已经显示了,这样再硬生生的播放一次动画其实会导致细微的闪烁效果。后来发现android中自带了TransitionDrawable类可以很轻松地实现这个效果,但是会有局限性。
LinaerLayout又被称为线性布局,是Android界面开发中常用的一种容器视图控件。可以使用XML布局文件配置和代码动态创建两种方式来使用LinearLayout。使用LinearLayout可以十分轻松的布局出横向或者纵向线性堆叠界面,并且,嵌套使用LinearLayout也可以方便的布局出复杂的平面组合布局,通常情况下,ScrollView会与LinearLayout进行结合使用。在iOS9中推出的UIStackView、在watchOS开发中使用和核心布局模型Group与LinearLayout的思路十分一致,可见这种线性堆叠的布局方式在一定场景下十分有优势。
URLRouter:将不同的模块定义成为不同的URL,通过URL的形式进行跨模块调用。
3.6、Android漂亮的Loading提示控件(ProgressDialog)
Android开发中StackOverflowError错误实例分析 一、概述 我在一个复杂的layout嵌套较多的android界面,碰到了java.lang.StackOverflowError这个Fatal Exception,app程序crash退出。这个错误出现的比较奇怪,在我做技术调研的时候,这个界面是放在单独的一个程序中展示的,工作很正常,没有出现这个严重错误,当将其嵌入到一个ActivityGroup后才报错。 android SDK中对该错误的出现的场景描述为:
通过对Android基本组件的学习,也有接触少部分Android的事件处理,比如按钮的点击事件、选框的状态切换事件。 一、Android事件处理 Android提供了两种方式的事件处理:基于回调的事件处理和基于监听的事件处理。 基于监听的事件处理:主要做法就是为Android界面组件绑定特定的事件监听器,前面小节已经见到大量这种事件处理的示例。 基于回调的事件处理:主要做法就是重写Android组件特定的回调方法, 或者重写Activity的回调方法。Android为绝大部分界面组件都提供了
ConstraintLayout是Android Studio 2.2中具有亮点的新功能之一,相比于RelativeLayout、LinearLayout等传统布局,它打破了开发者使用XML编写布局的依赖。 虽然传统布局也可以使用可视化界面拖动控件来搭建布局,但是因为不够灵活,大多数开发者还是会选择通过XML代码来搭建布局。而ConstraintLayout的出现将开发者带入可视化布局编程的新纪元,通过建立控件之间的约束,实现布局的构建。这样做有一个很大的优点,就是减少了布局的嵌套,减少了布局渲染的层数,降低了CPU的消耗,提高了程序的性能。 ConstraintLayout与RelativeLayout相似,都是通过建立控件与控件之间的位置关系来搭建布局,但是ConstraintLayout远远比RelativeLayout强大很多,接下来看一下ConstraintLayout的使用。
近一年,随着iOS和安卓陆续支持了深色模式,各个团队的一通操作,也的确为用户带来“眼前一黑”的体验。深色模式也成为了前阵子业界最火的话题之一。只是当设计师看了无数的关于深色模式的讨论;当无数产品跟进上线了深色模式;再当无数App的深色模式被骂的改了又改,回头来看看,你说的黑,到底是什么黑。 Chapter 1 我所经历过的深色模式 虽然说,我真正开始做UI设计是近年,但是曾经还是体验过很多深色模式的界面的。甚至有很多产品,天生就是深色模式。可以发现,史前的深色模式,要么是因为技术原因,要么就一些对注
在Android开发中,实现图片轮播(通常称为轮播图或幻灯片)通常不会直接使用一个名为ConvenientBanner的特定库(除非这是一个自定义库或特定于某个项目的组件)。然而,在很多app首页中,都会实现图片轮播,这里介绍一个简单又实用的组件ConvenientBanner,可以轻松实现图片轮播。
本篇为梦痕投稿,不可错过的干货哟 前言 随着科学技术的发展,智能手机早已成为我们当代人身边必不可少的“伙伴”之一,堪比对象女友。每天我们对着手机重复的做着点击、滑动操作,而手机则随着我们的操作给我们展示她的精彩。 … 废话到此结束。 看到这里,即使不是作为移动端码农的你也应该知道触摸事件对手机(经典键盘机除外)的重要性了。 什么是触摸事件 顾名思义,就是触摸手机屏幕后产生的事件。这时候请你拿出手机,点击屏幕中的某个按钮(不要松手),移动一段距离,松手。 这个过程一般会产生如下几个事件: 点击(Down)事
上一期我们学习了Android中的事件处理,也详细学习了Android中基于监听的事件处理,同时学会了匿名内部类形式,那么本期继续来学习其他四种事件监听器。 一、使用内部类作为事件监听器 和上面的匿名内部类不同,使用内部类可以在当前类中复用该监听器类;因为监听器类是外部类的内部类,所以可以自由访问外部类的所有界面组件,这也是内部类的两个优势。 接下来通过一个简单的示例程序来学习Android使用内部类作为事件监听器。 继续使用WidgetSample工程,在app/main/res
在《领域驱动设计——软件核心复杂性应对之道》一书中Eric Evans将应用架构分为以下层级:
在这个Demo里,只有三个页面:登录页、注册页、券列表页。在这里,也会遵循界面篇提到的三个基本原则:规范性、单一性、简洁性。 首先,界面层需要调用核心层的Action,而这会在整个应用级别都用到,因此,Action的实例最好放在Application里。代码如下:
RelativeLayout布局是Android界面布局中应用最广也最强大的一种布局,其不仅十分灵活,可以解决开发中各种界面布局需求,同时也很方便了解决了多屏幕尺寸的适配问题。在iOS开发中,Autolayout技术总是被赞不绝口,RelativeLayout布局就是Andriod系统中的Autolayout,其又被称为相对布局。
2018 年的 macOS Mojave 率先支持了深色外观,紧接着 Windows 10 在 2018 年的 10 月份大版本更新中,也引入了 Dark Mode。
从这篇文章开始,接下来会连载一系列的OpenGL相关博文,好好探讨如何在Android中进行OpenGL开发。 OpenGL的全称是“Open Graphics Library”,意思是开放图形库,它定义了一个跨语言、跨平台的图形图像程序接口。对于Android开发者来说,OpenGL就是用来绘制三维图形的技术手段,当然OpenGL并不仅限于展示静止的三维图形,也能用来播放运动着的三维动画。不管是三维图形还是三维动画,都是力求在二维的手机屏幕上面展现模拟的真实世界场景,这个OpenGL的应用方向说到底,可不就是时下大热的虚拟现实么?
最近在项目的过程中遇到了一个问题,menu-bar希望始终显示在最上面,而在之后的元素都显示在它之下,当时设置了 z-index 也没有效果,不知道什么原因,因此找了一下css有关层叠方面的资料,解决了这个问题,这里记录一下~
业务分层 依据行业经验来看,分层是解决复杂问题的简单方法,通过分层,可以把一个复杂问题分解为不同层次应用的小问题,解决各层小问题的难度小于总的问题难度;分层最成功能莫过于计算机网络通信
在 Android 应用开发中,Activity 是用户界面的核心组件,而 Activity 的启动模式则是决定应用界面如何在任务栈中交互、管理以及呈现的关键因素。正确的启动模式选择能够优化用户体验、提高应用性能,并确保应用在各种情景下都能保持稳定。本文将深入探讨 Android 中的 Activity 启动模式,详细解释每种模式的用途、适用场景。
您的回答为:线程是进程的一个实体,是CPU调度和分派的基本单位。一个进程可以启动多个线程。线程不能够独立运行,总是属于某个进程,进程中的多个线程共享进程的内存。一个线程可以创建和撤销另一个线程;同一个进程中的多个线程之间可以并发执行。使用线程的优点在于线程创建、销毁和切换的负荷远大于进程。
原文 http://www.codeplex.com/AppArchGuide 本人英语水平较差献丑了 :) 框架设计指导方针 目的 1明白软件架构的概念 2学习软件架构中的关键的设计原则 3
前言 RecyclerView在Android界面开发当中是很重要的, 那掌握它也是很必要的. 但是有些时候会觉得它很厚重, 这里就从RecyclerView的基础一直说到扩展, 让你把RecyclerView学薄了. RecyclerView官方文档也是非常厚重. 这篇文章融合了自己原来的多篇文章, 并进行了修正和改进, 而且添加了很多很有趣的内容. 本文需要20分钟以上的阅读时间, 请合理安排. 多图预警, 转载请注明出处! ---- 基础使用 要使用RecyclerView在A
Flutter是谷歌的移动UI框架,可以快速在iOS和Android上构建高质量的原生用户界面。Flutter可以与现有的代码一起工作。在全世界,Flutter正在被越来越多的开发者和组织使用,并且Flutter是完全免费、开源的。
前两篇文章《Android项目重构之路:架构篇》和《Android项目重构之路:界面篇》已经讲了我的项目开始搭建时的架构设计和界面设计,这篇就讲讲具体怎么实现的,以实现最小化可用产品(MVP)的目标,用最简单的方式来搭建架构和实现代码。
在之前的文章中,我们一起学习了构建视图的基本元素,文本Text、图片Image和按钮,用于展示一组连续视图元素的ListView,以及处理多重嵌套的可滚动视图的CustomScrollView,等等。
领取专属 10元无门槛券
手把手带您无忧上云