Android中一些开发的小技巧总结(持续更新)
来源:互联网 发布:windows git 环境变量 编辑:程序博客网 时间:2024/05/16 05:25
前言
做事,写代码都要找到最优的方案!
Activity中获取Fragment对象
不管是布局xml里是fragment(有id),还是一个帧布局,帧布局最终要替换成对应的fragment,通过findFragmentById可以获取到对应的fragment对象,然后你要使用fragment里面的某些方法等比较方便,网上说的那些通过回调等也是可以的,但是通常来说,Activity里需要使用fragment里面某些判断等简单调用吧,可以使用这种方式.如下我这边目前使用这个方式来操作一些逻辑,对于内存泄漏什么的,目前还没有检测.
EmailPullFragment fragment = (EmailPullFragment) getSupportFragmentManager().findFragmentById(R.id.frame_content); if (null != fragment) { if (fragment.checkHaveEmailData()) { ToastUtil.showCentreToast(EmailPullHomeActivity.this,R.string.email_no_batch_edit_hint); return; } else { startActivity(intent); } } else { startActivity(intent); }
Activity中获取跟布局(RootView)
大家如果做过“沉浸式状态栏”的功能,可能需要这个小技巧,因为沉浸式有个属性,当然这个沉浸式支持的最低系统是Android4.4,实现沉浸式需要使用到这个属性fitsystemWindows,这个需要在根布局里边加上fitsystemWindows = true可以实现沉浸式的效果,当然,代码中也可以设置这个属性,通过setFitsystemWindows(true)即可实现效果;话又说回来了,这个我们要做统一的效果,不能在每个页面根部都加这个属性吧,有点麻烦哦,看过源码的人都知道,Activity的唯一实现窗口phoneWindow就是我们手机的屏幕,里面有个DecorView,DecorView是一个容器,它所对应的ID 为android.R.id.content,之前我们经常调用setContentView(),我们的View就是该DecorView下面的一个子View,因此
((ViewGroup) context.findViewById(android.R.id.content)).getChildAt(0).setFitsSystemWindows(true);通过上面的设置我们就在代码中实现了沉浸式的效果,当然要在基类中设置,因为是统一的效果,基类设置也需要注意下,注意Activity加载过程,要在setContentView后,系统计算好布局高度一系列工作后展示到用户面前的时候,展示到用户面前,有个周期不就是onResume()吗,在基类的这个周期里加上上述的代码即可简单快速的实现沉浸式效果!(4.4系统的沉浸式和5.0系统之后的设置效果一样,虽然沉浸式的样式有所变化,那是系统级的变化,不影响使用!)
IntentService
该类继承于Service,执行一次,自行销毁(stopSelf) 针对后台耗时操作,可以使用这个,很方便!
动态注册广播
这个在平常开发中用的还是比较多的,IntentFilter中加入action,界面耦合等用的挺好,要注意内测泄漏的问题, 退出当前记类时记得将广播取消注册.
Android中的盒子模型
盒子模型最早用于前端Html,相对于外部是margin,相对于内部是Padding.Android布局使用xml编辑,也是盒子模型的原理,这里有个小技巧 比如你要实现一个未读数字的效果,可以这样编写
<RelativeLayout android:layout_width="60dp" android:gravity="center" android:layout_height="60dp"> <ImageView android:layout_width="wrap_content" android:src="@drawable/message_icon" android:layout_centerHorizontal="true" android:layout_alignParentRight="true" android:layout_height="wrap_content" /> <LinearLayout android:layout_width="wrap_content" android:layout_gravity="top|right" android:layout_alignParentRight="true" android:layout_marginTop="-3dp" android:layout_marginRight="-3dp" android:gravity="right|top" android:layout_height="wrap_content"> <ImageView android:id="@+id/iv_new_message" android:layout_width="10dp" android:layout_height="10dp" android:visibility="gone" android:src="@drawable/message_circle_bg" /> </LinearLayout> </RelativeLayout>
android:layout_marginTop="-3dp" android:layout_marginRight="-3dp"
可以看到-3dp的写法,其实跟3dp的方向正好相反,-3dp其实就是相对于父容器并向父容器靠拢,3dp是相对于父容器分开,可你又说了,那为什么不使用margin_bottom,根据盒子模型,marginBottom是这个控件距离父容器底部3dp,你改成30dp后,你会发现,有部分控件被遮挡了,也就实现不了右上角未读提醒了,可以看下我用这个实现的效果
就是右上角的红点,当然实现方式很多,我比较喜欢使用这个写法,嵌套了两层,帧布局的话会简单点,记得我尝试过,可能效果不太理想吧.
阅读全文
1 0
- Android中一些开发的小技巧总结(持续更新)
- iOS开发中总结的小技巧(持续更新中)
- 关于实际开发中优化web的一些小技巧汇总(持续更新中)
- Android开发技巧总结(持续更新中。。。)
- Cocos2d-JS开发中的一些小技巧(持续更新)
- [持续更新]android stduio的一些小技巧
- Android studio使用的小问题,小技巧总结----持续更新中
- JavaEE开发中Hibernate使用小技巧总结(持续更新)
- Word小技巧总结(持续更新中……)
- OC 开发当中的一些小技巧(持续更新ing)
- Python 里面的一些小技巧(持续更新)
- iOS开发中一些有用的小代码(持续更新)
- Android开发小技巧整理(持续更新)
- Android 开发小技巧整理(持续更新)
- iphone 开发小技巧(持续更新中)
- iOS开发小技巧(持续更新中)
- android 开发中遇到的一些小的知识点在此做一个记录(持续更新)
- iOS开发中一些小功能代码(持续更新)
- 数学优化与凸集2(斯坦福凸优化笔记2)
- MulVAL 工具安装配置
- 69-Sqrt(x)
- js时间差
- Android 6.0系统读写文件出现FileNotFoundException:EACCES (permission denied)解决办法
- Android中一些开发的小技巧总结(持续更新)
- 获取Web.config中链接字符串和获取配置文件的Key和静态类中获取session
- 70-Climbing Stairs
- 深浅拷贝
- EL-------6.23
- Linux ALSA声卡驱动之一:ALSA架构简介
- Android Context理解/在一个应用中程序中有多少个context实例?
- 面试题【1】:i++是否原子操作?并解释为什么?
- Unity Spine 换图(通过外部图片)