Android 开发中的注意点

59 篇文章 0 订阅
33 篇文章 1 订阅

前言

我们平常在开发Android的时候,经常会遇见命名感觉代码是对的,但是效果确实不尽人意的时刻.其实很多时候都是自己的代码或者其他地方没有注意到引起的.所以博主把博主开发的时候遇到的坑全都记录下来,方便自己查阅也做一个分享.会不断的更新

代码编写方面


  • Fragment

add fragment到Activity上的时候注意了,这个方法内部有一些异步的操作,导致你add之后立马通过getFragmentByTag方法拿到的是Null


  • 自定义控件实现拖动的效果注意点

有时候我们需要一个View可以拖动,我们拖动的时候拿到的差值dx,dy一般是通过onTouchEvent回调方法中计算出来的,但是这里有一个注意点,如果当你要改变自身view的位置的时候,千万不要使用Event对象的getX()和getY()方法,因为这两个方法是和自身View息息相关的,获取到的值是从自身View的left和top计算的
所以这时候你如果要得到准确的值你可以将getX()得到的值加上getLeft()的值,这时候值就是和自身View位置无关的值了
或者你可以使用Event中的getRawX()和getRawY()方法
当你自定义的View中不会改变自身的位置的时候,你就可以使用Event的getX()和getY()


  • xml中控件隐藏的问题

xml 的编写在我们的开发中实在是太常用了,但是不知道有没有人遇到下面的情况.
对于一个维护的界面,你可能想要知道这个界面是如何实现的,那么一般都是看运行的效果和看界面对应的xml开始.但是很多的xml中会有隐藏的控件,其实就是界面刚加载的时候需要隐藏.
但是就是这么一点细节导致你看xml是比较吃力的.因为xml有预览界面,你把一些控件都隐藏了,直接加深了理解的难度.

所以这里发表下博主的见解.平时开发xml的时候所有控件都不要隐藏,这样子别人再看这个界面的时候能从预览界面一眼看到所有的控件.如果有需要隐藏的控件,请在Activity初始化的时候去隐藏控件!


  • 界面之间的跳转

有些人觉得这一点有什么可讲的,一个跳转而已,是呀,对于那些入口不多的界面来说,跳转这点是没必要,但是一旦有些界面跳转的入口多了,比如电商的商品详情界面,入口可以是一个h5,首页推荐,购物车,订单列表,订单详情,甚至可以是任何可以推荐商品的地方。那么如果你每个地方还是像下面一样把这段代码写的到处都是

Intent intent = new Intent(this, ProductDetailAct.class);
startActivity(intent);

那么有人会说,我写了一个工具类来实现这种入口非常多的界面的跳转,这样子就方便日后的维护了.这么做是没什么问题,但是会多出来一个所谓的工具类,博主的建议是直接在商品详情的Activity中写一个静态的方法即可,这样即可以统一管理,也符合设计.既不会多一个工具类,同时也有一种谁的界面跳转谁自己管的意思.博主觉得这种方式是比较好的.


  • 组件的封装
    在项目中总有很多组合控件是类似的,或者基本都是一样的,所以我们平时可以用include便签来抽取封装一些一样的视图,比如标题栏、显示头像的组件、比如项目中大范围用到的一种或者两种或者更多样式的按钮之类的控件
    include 标签只适用静态的视图,什么意思?比如标题栏这个xml,A界面include了,你需要在A Activity中找到标题栏控件设置标题,那么如果B界面也 include了,也要重新做一遍,其实这是很傻的一种行为,为什么不能在A的xml中就把标题栏的标题给指定呢?那么你在A Activity中就根本不需要写任何代码,B界面亦是如此
    所以针对上述的情况,我们在A 界面的xml中就不应该 使用include,而是直接使用自己封装的titlebar,虽然里面的布局依旧是你 include进来的xml,但是这里面有一个很大的区别是,你在A界面的xml中就可以通过自定义属性指定标题了,指定返回图标,等等.就相当于在A的xml中就完成了标题栏的初始化,当然了,对于那种滑动要改变标题栏的透明度之类的效果,当然还要写额外的代码,但是我们界面基本都不是这样的,所以你能少写很多代码!

资源文件方面


selector选择器为什么不生效?

如果你写的是点击反馈的选择器,那么做到下面两点就肯定生效了
  • 状态是android:state_pressed
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true" android:drawable="@drawable/om_solid_shape8"/>
    <item android:drawable="@drawable/om_solid_shape2"/>
</selector>
  • 使用的控件注册了点击事件,否则没有效果!(博主之前就是因为这个被坑的要死)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值