
使用换肤框架后,app运行时logcat报错
View class skinsupportwidgetSkinCompatTextView is an AppCompat widget that can only be used with a ThemeAppCompat theme (or descendant)
一开始以为是换肤框架的问题,后面排查发现换肤框架并不是主要原因。
首先:皮肤包在布局加载器 LayoutInflater 获取xml文件生成view的时候把View 替换为皮肤包下面的继承androidxappcompatwidget 包下的view,但是androidxappcompatwidget 包下的控件构造器中有这么一个检查:
图二可以看到,AppCompatTextView 创建时候会对 context 的主题进行检验,是否正确使用AppCompat主题,但是我们的项目一般都会在AndroidMainfestxml文件Application下声明AppTheme所属主题,那么这是为什么呢。
原因在于
加载布局的时候使用application作为context传入,而 ApplicationContext是没有应用主题数据的,必须要使用activity的context才可以 。
附: stackoverflow 上关于这个问题的讨论
手机端APP界面导航布局中使用的九宫格布局形式属于网格组合。
导航是APP设计时要着重考虑的,常见的APP框架有列表、网格、屏幕轮显、标签导航、tab导航、抽屉导航、卡片、泳道、堆叠组合。
网格就是把应用图标、缩略图、功能图标等内容根据水平方向和垂直方向划分所构成的辅助线进行布局。在界面设计中,九宫格这种类型的构图更为规范和常用,用户在使用过程中非常的方便,应用功能会显得格外的明确和突出。
其实写 BaseActivity 的时候,都需要结合不同的 App 的需求以及应用架构来实现的,没有固定的实现方式。所以这里结合前面几篇文章来写一个 BaseActivity
结合前面的文章说的, BaseActivity 应该有下面这些内容
应用中往往少不了加载动画,所以 BaseActivity 也应该写一个公共的显示和隐藏加载框的方法,结合前文的 IProgressDialog 接口。由于 Android 的 ProgressDialog 注解过时, Google 不推荐使用,那么这里就通过 AlertDialog+ProgressBar 简单实现下面的效果
我们都知道 AlertDialog 是有一个底色背景的,所以这里先写一个 Style 让底色背景透明
接下来就是这个d框的布局
然后就是创建 AlertDialog 设置布局
把前面的 Style 在创建 AlertDialogBuilder() 传入即可让底色背景透明,然后通过 AlertDialog 的 setView() 方法就可以自定义布局了。
定义一个 FragmentManager 方便 *** 作 Fragment 的时候使用
对应 Rx1x 版本的 CompositeSubscription ,将请求接口统一绑定起来
然后在 onDestroy() 进行统一的解绑
结合前文封装的 RealmHelper 帮助类,实现 Realm 的实例并且定义一个 RealmAsyncTask
然后在 onStop 里面进行清除
首先会在 BaseActivity 定义一个默认的布局 act_single_fragmentxml
其中 content 是用来放置内容的区域,然后 toolbar_layoutxml 是 ToolBar 的布局
提供一个方法供外部实现 ToolBar 样式,默认是 TitleFragment
TitleFragment 就是一个简单的头部样式,如图
最后处理返回键的回调方法
通过上面的说明,最终 BaseActivity 如下
从使用场景上,Web App用户面临比原生APP用户更严峻的问题: 1、 页面跳转更加费力,不稳定感更强 思考点:如何减少跳转(扁平结构、页面布局技巧),增加数据及展示的流畅流程及稳定性(技术) 2、 更小的页面空间(由于浏览器的导航本身占用一部分屏幕空间),更大的信息记忆负担 移动设备的屏幕要小得多。这种如同透过门缝进行的阅读增加了认知的负担。人脑的短期记忆是不稳定的,用户在滚动屏幕的过程中需要临时记忆的信息越多,他们的表现就会越差。——《贴心设计:打造高可用性的移动产品》 思考点:排版更清晰、信息更简练 (可在原生APP基础上去掉一些丰富、复杂的视觉表现) 3、 导航不明显,原有底部导航消失,有效的导航遇到挑战 思考点:如何有效的提供导航有哪些形式 4、 交互动态效果收到限制,影响一些页面场景、逻辑的理解。 思考点:比如登录注册流程的d出、完成及异常退出,做好文字提示。 针对以上困境,解决方法总结如下: 首先,从APP到WAP版,在产品上,最明显且核心的: 1、 精简功能,只将核心的任务实现,非核心的枝节可考虑删减。 2、 做好新的Web App导航 3、 补充从Web App 对 下载原生APP 的引导。 一、常见的几种Web APP导航样式 11顶部底部导航的设计: 12导航快捷键设计: 美团:顶部栏固定位置 淘宝:悬浮圆圈–可的按钮 优酷:非首屏时页面右侧悬浮 二、有效的导航设计 1、 基本的快捷导航中包括 返回常用页面(如 首页 我的 等)的快捷方式 2、 出现深层架构时 及时补充返回重要层级页面的快捷方式 3、 情境式导航,方便用户快捷跳转到ta想去的页面,如购买结束时提供查看订单详情的按钮。 PS:Web APP更加需要画页面跳转的流程图,摸清各个页面的入口,尤其是页面返回的流程;有些简化的返回按钮,可以特殊注明返回到的页面 在哪里出现引导? 一般首页、核心任务的页面(如 电商Web APP的商品详情页 、视频Web APP的视频观看页) 二、引导下载APP有哪些形式 页面顶部放置下载条 页面底部悬浮层引导 融合在页面首屏中 下载按钮形式 底部Foot里含客户端下载入口 其次,在设计Web App时,有以下小技巧可以参考: 1、 从页面布局上减少跳转:使用交互技巧隐藏文字(eg 腾讯视频) 利用收起按钮 减少页面跳转。 2、 取消float浮层,增大展示空间(eg:大众点评) 取消float浮层,同时在详情尾部再次加上 “购买”按钮。 浮层的转换处理。 3、 页面中对进行缩小(因情况而异)的处理、精简一些标签导航的视觉展示。 视觉微调。 技术上注意点: 1)各手机浏览器的兼容测试 2)底层服务的调取(能调取,但只有当其是核心功能时才保留 eg:新浪、美团等皆去掉了头像上传功能) 3)注意离线数据存储,减少数据请求频率。 4)考虑保存用户的哪些数据:设置、个人数据、阅读锚点、跳出页面等。 5)避免动效与浏览器的交互冲突 6)按顺序 异步加载 eg: 腾讯视频 腾讯视频异步加载。 虽然Web App目前处于比较尴尬的地位,我们是由于原APP客户端中一些页面需要分享出去才开启制作Web App版。 但是不得不承认,基于Web的轻APP 更新迭代起来更方便,随着H5技术的成熟和发展,也许以后就是基于H5的Web App的天下了 00
以上就是关于Android 使用Application创建布局的问题全部的内容,包括:Android 使用Application创建布局的问题、手机端APP界面导航布局中使用的九宫格 布局形式属于、Android搭建应用框架系列之BaseActivity等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)