- android:ems=“10” 设置TextView或EditView的宽度为10个字符,如果超过则不显示。
ImageView Scaletype 属性,决定图片在View上显示的样子,如,显示整体还是部分或是缩放
center:按照图片原来的size居中显示,如果图片的长宽大于View,则截取图片的居中部分
center_crop:按比例扩大图片的size居中显示,使图片的长宽大于或等于View的长宽
center_inside:将图片的完整内容居中显示,按比例缩小或是原来的size小于或等于View长宽
- Android 创建文件夹及注意事项
File dir = new File(path);
if (!dir.exists()) {
dir.mkdirs();
}
注意:创建文件夹时写入文件,会存在没有发现文件夹的错误,那是因为没有添加权限,需要添加权限 :
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
一个Android 程序默认情况下也只有一个Process,但一个Process下却可以有许多个Thread,在这么多Thread当中,有一个Thread,我们称之为UI Thread。UI Thread在Android程序运行的时候就被创建,是一个Process当中的主线程Main Thread,主要是负责控制UI界面的显示、更新和控件交互。在Android程序创建之初,一个Process呈现的是单线程模型,所有的任务都在一 个线程中运行。因此,我们认为,UI Thread所执行的每一个函数,所花费的时间都应该是越短越好。而其他比较费时的工作(访问网络,下载数据,查询数据库等),都应该交由子线程去执行, 以免阻塞主线程。
UI Thread如何和其他Thread一起工作呢?常用方法是:
诞生一个主线程的Handler物件,当做Listener去让子线程能将讯息Push到主线程的Message Quene里,以便触发主线程的handlerMessage()函数,让主线程知道子线程的状态,并在主线程更新UI。- 声明静态方法注意事项
- 它们仅能调用其他的静态方法;
- 它们只能访问static类型的数据;
- 它们不能以任何方式引用this或super
- static静态代码块在类加载时执行一次
- Android 动画属性,Android 动画属性分为三类:
- View 动画:
- 缩放ScaleAnimation
- 透明度动画AlphaAnimation
- 移位动画TranslateAnimation
- 旋转RotateAnimation
- 包名:android.view.animation 基类Animation 核心子类,以及AnimationSet.
- property 动画:
- 包名:android.animation 基类Animator 子类ValueAnimator和AnimatorSet
- ValueAnimator的子类有ObjectAnimator和 TimeAnimator,一般我们用属性动画ObjectAnimator.
- View 动画:
Android中有时会使用比我们在manifest中设置的android:minSdkVersion版本更高的方法,此时编译器会发生警告解决的方法是在方法上方添加@SuppressLink(“NewApi”) 或者 @TargetApi().
@SuppressLint(“NewApi”) 屏蔽一切新api中的才能使用的方法报的android lint错误。
@TargetApi() 只屏蔽某一新api中才能使用的方法报的android lint错误。
ListView中item不可点击问题,无论怎么点击就是没有反应啊,怎么点都没有反应,咋回事捏,以下是我的无敌解决方案
点击item没有反应,无法获取焦点,多半的原因是自定义的item中存在Button ImageButton CheckBox等子控件,这些子控件会将焦点获取到,因此常常变化的是子控件。这时应该使用descendantFocusability 来解决
- beforeDescendants:viewgroup会优先其子类控件而获取到焦点
- afterDescendants:viewgroup只有当其子类控件不需要获取焦点时才获取焦点
- blocksDescendants:viewgroup会覆盖子类控件而直接获得焦点
- 对图片处理需要使用到matrix类,它是一个3 * 3 的矩阵,对图片处理主要有四种基本类型
Translate | 平移 |
---|---|
Scale | 缩放 |
Rotate | 旋转 |
Skew | 错切 |
Android 颜色渲染,SweepGradient扫描/梯度渲染
public SweepGradient (float cx,float cy,int[]colors,float[]positions)
- cx:渲染中心x坐标
- cy:渲染中心y坐标
- colors:围绕中心渲染的颜色数组,至少有两种颜色值
- positions: 相对位置的颜色数组,若为null,颜色沿着渐变线均匀分布
Android注解支持
可以修饰你的代码,帮助你发现bug,Android studio 基于这些注解校验你的代码并且标注其中潜在的问题。
support library现在由更小的库组成:v4-support appcompat gridlayout media router
Android 设置透明、半透明效果
- 系统透明效果
android:background=“@android:color/transparent”
- ARGB控制
android:background=“#e000000”
半透明 - alpha控制
view.getBackground.setAlpha(100)
0~255表示透明度的值 - 窗体透明度,黑暗度设置技巧
WindowManager.LayoutParams lp=getWindow().getAttributes();
lp.alpha=0.3f;
getWindow().setAttributes(lp);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
Android paint效果研究,paint类大体可以分为两类,一类与图形绘制有关,一类与文本绘制有关
Method | Detailed |
---|---|
setAntiAlias(boolean aa) | 是否使用抗锯齿功能,设置后会平滑一些,将会消耗较小资源 |
setDither(boolean dither) | 是否使用图像抖动功能,颜色更加平滑和饱满,图像更加清晰 |
setMaskFilter(MaskFilter maskfilter) | 实现滤镜的效果 |
setARGB(int a,int r,int g,int b) | a代表透明度 r,g,b 代表颜色值 |
setAlpha(a) | 设置透明度 |
setColor(int color) | 设置绘制的颜色,包括透明度及RGB颜色 |
setPathEffect(PathEffect effect) | 设置绘制路径的效果,如点画线 |
setShader(Shader shader) | 设置shader可以绘画出各种渐变效果 |
setStyle(fill stroke fill_OR_stroke) | 设置画笔的样式 |
setStrokeWidth(float width) | 设置笔刷的粗细度 |
Android 屏蔽Button按键
- setClickable 意思是让按键按一次,比如弄个计时器,然后在手机上模拟,多长时间后让按键自己按一下而不是手动去按。
- setEnabled 让一个按键可以被用户按,或者不可按,当设置为false的时候,按键会变成灰色,按上去没有反应,当设置成ture时,才会正常使用。
Android Bitmap getByteCount 和 getRowBytes
- getByteCount 用于计算位图所占的内存字节数
- getRowByte 用于计算位图每一行所占用的内存字节数
Android studio 获取SHA1方法
- 在dos命令下输入【cd .android】
- 进入 .android 目录输入[keytool -list -v -keystore debug.keystore]
- 输入密钥库口令,默认的测试口令(密码) 为 android,输入后即可查看
Anroid studio 导入project时设置导入选项讲解
Gradle project :此处通常显示的路径并不是你的 Eclipse 的工作空间的目录,而是 Eclipse 的工作空间的目录中的 gradle 路径。你需要手动删除后面的 gradle ,否则项目导入,你是看不到你的代码的,只能看到 gradle 目录下的内容。(删除默认路径后面的 /gradle )
- Create directories for empty content roots automatically :不是很明白它的作用,一般默认即可。
- Use default gradle wrapper(recommended) 和 Use local gradle disribution :这两个是让你设置使用的 Gradle ,默认会勾选。
- Use default gradle wrapper(recommended) ,我们需要手动勾选 Use local gradle disribution 。
- Gradle home :勾选 Use local gradle disribution 后此项编程可编辑状态,默认的此处的地址为Android Studio安装目录中的 Gradle 路径地址。此处可能会有一些错误的警告,提示内容为: Gradle location is incorrect 。而你的这个目录下,确实是有 Gradle 的。产生这个问题的原因,很可能是因为 Gradle home 选项中,路径中的斜杠为 / 而不是 (**) 。你需要点击左右的文件选择按钮,重新选择到Android Studio安装目录中的 **Gradle ,问题即可解决。
当字符串是浮点型数字转化成 int 技巧
String str = String.format("%1$s","5.0")
int a = Integer.parseInt(str)