Android 日常笔记

  1. android:ems=“10” 设置TextView或EditView的宽度为10个字符,如果超过则不显示。
  2. ImageView Scaletype 属性,决定图片在View上显示的样子,如,显示整体还是部分或是缩放

    • center:按照图片原来的size居中显示,如果图片的长宽大于View,则截取图片的居中部分

    • center_crop:按比例扩大图片的size居中显示,使图片的长宽大于或等于View的长宽

    • center_inside:将图片的完整内容居中显示,按比例缩小或是原来的size小于或等于View长宽

  3. Android 创建文件夹及注意事项
    File dir = new File(path);
    if (!dir.exists()) {
        dir.mkdirs();
    }

注意:创建文件夹时写入文件,会存在没有发现文件夹的错误,那是因为没有添加权限,需要添加权限 :

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
  1. 一个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。

  2. 声明静态方法注意事项
    • 它们仅能调用其他的静态方法;
    • 它们只能访问static类型的数据;
    • 它们不能以任何方式引用this或super
    • static静态代码块在类加载时执行一次
  3. Android 动画属性,Android 动画属性分为三类:
    • View 动画:
      • 缩放ScaleAnimation
      • 透明度动画AlphaAnimation
      • 移位动画TranslateAnimation
      • 旋转RotateAnimation
      • 包名:android.view.animation 基类Animation 核心子类,以及AnimationSet.
    • property 动画:
      • 包名:android.animation 基类Animator 子类ValueAnimator和AnimatorSet
      • ValueAnimator的子类有ObjectAnimator和 TimeAnimator,一般我们用属性动画ObjectAnimator.
  4. Android中有时会使用比我们在manifest中设置的android:minSdkVersion版本更高的方法,此时编译器会发生警告解决的方法是在方法上方添加@SuppressLink(“NewApi”) 或者 @TargetApi().

    • @SuppressLint(“NewApi”) 屏蔽一切新api中的才能使用的方法报的android lint错误。

    • @TargetApi() 只屏蔽某一新api中才能使用的方法报的android lint错误。

  5. ListView中item不可点击问题,无论怎么点击就是没有反应啊,怎么点都没有反应,咋回事捏,以下是我的无敌解决方案

    • 点击item没有反应,无法获取焦点,多半的原因是自定义的item中存在Button ImageButton CheckBox等子控件,这些子控件会将焦点获取到,因此常常变化的是子控件。这时应该使用descendantFocusability 来解决

      • beforeDescendants:viewgroup会优先其子类控件而获取到焦点
      • afterDescendants:viewgroup只有当其子类控件不需要获取焦点时才获取焦点
      • blocksDescendants:viewgroup会覆盖子类控件而直接获得焦点
  6. 对图片处理需要使用到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 设置透明、半透明效果

  1. 系统透明效果 android:background=“@android:color/transparent”
  2. ARGB控制 android:background=“#e000000” 半透明
  3. alpha控制 view.getBackground.setAlpha(100) 0~255表示透明度的值
  4. 窗体透明度,黑暗度设置技巧
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方法

  1. 在dos命令下输入【cd .android】
  2. 进入 .android 目录输入[keytool -list -v -keystore debug.keystore]
  3. 输入密钥库口令,默认的测试口令(密码) 为 android,输入后即可查看

Anroid studio 导入project时设置导入选项讲解

  • Gradle project :此处通常显示的路径并不是你的 Eclipse 的工作空间的目录,而是 Eclipse 的工作空间的目录中的 gradle 路径。你需要手动删除后面的 gradle ,否则项目导入,你是看不到你的代码的,只能看到 gradle 目录下的内容。(删除默认路径后面的 /gradle )

    1. Create directories for empty content roots automatically :不是很明白它的作用,一般默认即可。
    2. Use default gradle wrapper(recommended) 和 Use local gradle disribution :这两个是让你设置使用的 Gradle ,默认会勾选。
    3. Use default gradle wrapper(recommended) ,我们需要手动勾选 Use local gradle disribution 。
    4. 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)

关于WebSocket的应用,详细博客

http://blog.csdn.net/yl02520/article/details/7296223

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章