小技巧,不足为专题内容

TextView的drawableLeft与文本一起居中显示

原始的TextView设置了LeftDrawable后,如果TextView的宽度是MATCH_PARENT,LeftDrawable是无法和TextView中的text一起居中的,而是在左边。
参见 http://www.cnblogs.com/over140/p/3464348.html
请注意这个时候设置TextView的Gravity为CENTER_VERTICAL,因为下面链接中提到的自定义组件其实就是将画布开始draw的位置向中间移动了(业绩leftDrawable和text一起从中间开始draw)。如果textView被设置为横向居中,那么最后结果textView会跑到右边。

添加子view到LinerLayout中,子view的layout参数被去掉了。

使用addView(View view ,index ,LayoutParams) 来重新设置子view在父布局中的布局参数。

什么条件下使用layer-list

故名思意,多图层表。

使用场景:

  • 需要多个图片资源进行重叠
  • 需要有padding的分割线。
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"><item
        android:bottom="8.8dp"android:top="8.8dp"><shape android:shape="rectangle"><solid android:color="@color/hotel_flight_divider_color"></solid><size
                android:width="1dp"android:height="1dp"></size></shape></item>
</layer-list>

实现:

可以不用 Context 也能获取屏幕密度

1.Resources.getSystem().getDisplayMetrics().density 可以不用 Context 也能获取屏幕密度

/*** Return a global shared Resources object that provides access to only* system resources (no application resources), and is not configured for* the current screen (can not use dimension units, does not change based* on orientation, etc).*/
public static Resources getSystem() {synchronized (sSync) {Resources ret = mSystem;if (ret == null) {ret = new Resources();mSystem = ret;}return ret;}
}

为java中创建的view设置资源id

2.new 出来的 View 可以用 View.generateViewId() 生成 id,系统保证唯一。

private static final AtomicInteger sNextGeneratedId = new AtomicInteger(1);
public static int generateViewId() {for (;;) {final int result = sNextGeneratedId.get();// aapt-generated IDs have the high byte nonzero; clamp to the range under that.int newValue = result + 1;if (newValue > 0x00FFFFFF) newValue = 1; // Roll over to 1, not 0.if (sNextGeneratedId.compareAndSet(result, newValue)) {return result;}}
}

仅支持api17及以上,17以下将上面的代码拷贝一份到工具类中。

if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN_MR1){return  Utils.generateViewId(view);
}else{return  view.generateViewId();
}

如果插件化加载中使用aapt动态调整资源的packageId,可能会出问题。因为generateViewId的本质是将package从01开始计数自增,保证和res中的资源id不一样。

当compileSdkVersion和运行机版本不match时如何正确断点

debug低版本源码
比如我现在现在想debug api17的源码,但是工程里配置是compileSdkVersion 23,所以得debug跳到的源码也是api23的,但是又不能改变compileSdkVersion,how to 弄?
1.先编译
2.去sdk的源码sources目录,把17的目录名改成23
mv android-23 23-temp
mv android-17 android-23
3.然后debug就能在17的源码打断点了

clipChildren=”false”

让属性动画穿过布局边界

LinearLayout 分隔线divider

LinearLayout有两个属性
1、android:divider=”@drawable”
2、android:showDividers = “middle|end|beginning|none”
middle 在每一项中间添加分割线
end 在整体的最后一项添加分割线
beginning 在整体的最上方添加分割线
none 无

但是,这种属性只有Android3.0以上才支持。
兼容3.0以下版本,需要引用android-support-v7-appcompat.jar
使用android.support.v7.widget.LinearLayoutCompat,用法和LinearLayout一样

Android 之小技巧相关推荐

  1. Android逆向小技巧①:从Activity下手找到切入点,逆向分析支付宝APP

    明确目标 关于Android应用的解包.反编译,在网上已经有无数文章了,此处不再赘述.当你已经使用 [d2j-dex2jar] 和 [jd-gui] 得到了APK反编译后的JAVA代码,面对庞大的代码 ...

  2. Android开发小技巧 | 一句命令搞定截屏

    -- 简书作者 谢恩铭 转载请注明出处 一句命令搞定截屏 在安卓开发中, 我们很多时候都要用到截屏这个功能. 有时是为了演示, 有时是为了报告问题(比如在Bugzilla, Jira, Redmine ...

  3. Android 开发小技巧 | 一句命令搞定截屏

    -- 作者 谢恩铭 转载请注明出处 一句命令搞定截屏 在安卓开发中, 我们很多时候都要用到截屏这个功能. 有时是为了演示, 有时是为了报告问题(比如在Bugzilla, Jira, Redmine等B ...

  4. Android Studio 小技巧/快捷键 合集

    原文链接: Android Studio Tips by Philippe Breault 原文作者 : Philippe Breault 译文出自 : 掘金翻译计划 译者 : Jaeger, Bru ...

  5. Android 开发小技巧(2)

    转自:农民伯伯: http://www.cnblogs.com/over140/ 常用代码 7.1   在当前Activity中启动另外一个Activity startActivity(new Int ...

  6. Android开发-小技巧汇总2

    启动虚拟机时,在 launch options 窗口中 有个 wipe user data ,勾选它,将会让虚拟机 [恢复出厂设置] 2.[如果想让自己的应用程序有多个启动图标:] 为一个应用的 多个 ...

  7. android开发小技巧:实现listview异步加载图片

    2019独角兽企业重金招聘Python工程师标准>>> 针对listview异步加载图片这个问题,麦子学院android开发老师讲了一种非常实用的方法,麦子学院android开发老师 ...

  8. Android Studio小技巧

    2019独角兽企业重金招聘Python工程师标准>>> 一般的什么快捷键,技巧的文章也有很多.我也看过很多.下面这些事我在来自国外大神发布的:Android Studio Tips ...

  9. Android编程小技巧

    1.我们有时会遇到如下问题.当有两个或多个UI类展示界面大体相同,但需要展示不同的内容,并且这些类之间都要相互交换或者刷新数据.繁琐的做法是为每一个UI类都建立新的布局,这样便出现了很多冗余布局,当它 ...

最新文章

  1. [转]g++ 编译多个相关文件
  2. rsync 常见错误与解决方法整理
  3. BZOJ 1370: [Baltic2003]Gang团伙 [并查集 拆点 | 种类并查集WA]
  4. 清理XCode无用的文件(转)
  5. 20130327 jQuery easyUI
  6. java spring流程_浅谈SpringMVC执行过程
  7. [leetcode] 53.最大子序和
  8. vmware配置centos7网络
  9. LeetCode 287. 寻找重复数(BitMap)
  10. jQuery使用():Deferred有状态的回调列表(含源码)
  11. IntelliJ IDEA在行尾增加分号
  12. 《深入解析Android 虚拟机》——导读
  13. python的作用域分别有几种_Python作用域和命名空间
  14. 用BT3和spoonwep2研究学习WEP密码…
  15. findbug规则说明
  16. 3.acwing3373. 进制转换
  17. 替换空格 ——《剑指offer》
  18. 网页中漂浮的图片代码
  19. 混合硬盘计算机,什么是混合硬盘 什么是hhd硬盘?
  20. 亿可控_第1章_系统分析与设计

热门文章

  1. Django - - 进阶 - - 同源策略和跨域解决方案
  2. 多线程学习-基础(十三)(学习参考·网摘) ArrayBlockingQueue源代碼解析(base jdk 1.8)...
  3. DNS(二)--正反解析及主从配置
  4. 【原创翻译】The Case for the Reduced Instruction Set Computer
  5. MySQL优化—磁盘事宜
  6. GARFIELD@09-28-2004
  7. 利用XSLT把ADO记录集转换成XML
  8. property Alternative forms propretie
  9. 2018 ACM 国际大学生程序设计竞赛上海大都会赛重现赛 J Beautiful Numbers
  10. Egret学习笔记 (Egret打飞机-3.实现背景循环滚动)