从14年开始从事安卓开发。喜欢接触新鲜事物,不断的挑战自己
最近开发,UI大牛们设计了好多很炫酷吊炸天的动画,不由得重新学习了一下5.0的ObjectAnimator动画。 ObjectAnimator动画的原理,通过反射控件的setXXX方法,改变控件的实际属性值,来达到控件状态改变的动画效果。
Android5.0 Material Design设计的动画效果 RippleDrawable涟漪效果 涟漪效果是Android5.0以后的新特性。为了兼容性,建议新建drawable-v21文件夹来存放RippleDrawable,drawable文件夹下也要放相应的适配图片。
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设置第三方字体 1、准备工作-下载第三方字体:传送门 将文件放入工程assets目录下。(一般个人习惯单独命名一个文件夹放字体文件,也可直接放入根目录,但记得改引用路径) 2、代码实现 a、自定义appl...
1、File cacheDir = context.getCacheDir(); 应用内部存储空间(数据文件私有)文件存储到这个路径下,不需要申请权限,当应用被卸载的时候,目录下的文件会被删除。 需要注意的是,这个文件的目录和应用的存储位置有关, 当应用被移动到外部存储设备的时候,文件的绝对路径也是变化的,所以建议当数据存储到这个目录的时候,用相对路径。
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,是最简单的一种方式,只需要传入http的URL就可以,实现WebView加载网络页面 代码如下图: 二、加载本地页面 1、加载assets目录下的HTML页面: 加载assets目录的页面,大多数可以用来做页面数据的存储打包...
总述: 所有的增删改查都需要通过greendao通过实体对象类生成的Dao来实现, 具体实现如下图 1、初始化数据库操作对象(GreenDao自动生成的操作对象) 2、通过数据库操作对象,进行增删改查操作 Tips 增 添加的记录需要初始化数据对象里面的数据 查 可以多次使用where(),进...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个框架还是不错的。直接面向对象的,可以通过对对象的操作,实现数据的存储。 但是官网上的API是在不敢恭维,文档写的很糙,看了半天,才搞懂一系列的流程。
安卓Native和H5页面进行交互 1、H5页面调用安卓Native界面 1)通过给webView添加JsInterface,安卓提供接口,让H5来进行调用 a)安卓写一个类,里面的方法需要用通过注解来表明是java接口的方法。
汉诺塔问题 最近面试题遇到过汉诺塔的问题,当时竟然懵逼了,不会了!!大学研究的问题竟然都忘光了,于是抓紧捡起来。然而在网上看了看博客,发现非递归算法还真挺多。下面总结了一下。 一、递归算法 1、递归算法优缺点:递归算法算是最易于理解也是最容易实现的,但是对内存的消耗也是巨大的,因为递归需要系统堆栈来保存调用函数地址、形参、局部变量、返回值等数据,也就是回调N次,就要保存N个之前提到的数据。
事件分发机制详解 一、基础知识介绍 1、经常用的事件有:MotionEvent.ACTION_DOWN,MotionEvent.ACTION_MOVE,MotionEvent.ACTION_UP等 2、常用的方法有:disPatchTouchEvent(),onTouchEvent(),onI...
又是好久没有写博客了,一直都比较忙,最近终于有时间沉淀和整理一下最近学到和解决的一些问题。 最近进行技术支持的时候,遇到了几个崩溃的问题,都是OOM异常,一般OOM异常给人的感觉应该是加载大图片造成的,但是经过看界面布局,并且分析加载图片的大小发现加载图片方面已经没有什么可以优化的了,但是依然崩溃,没办法了,又用的IDEA工具中的内存监视器,来判断到底是哪里造成内存激增,做哪些操作造成页面资源没有及时释放。
Android 性能优化——之控件的优化 前面讲了图像的优化,接下来分享一下控件的性能优化,这里主要是面向自定义View的优化。 1、首先先说一下我们在自定义View中可能会犯的3个错误: 1)Useless calls to onDraw():我们知道调用View.invalidate()会触发View的重绘,有两个原则需要遵守,第1个是仅仅在View的内容发生改变的时候才去触发invalidate方法, 第2个是尽量使用ClipRect等方法来提高绘制的性能。
Android 性能优化——之图片的优化 在Android性能优化中,我们会发现占内存最大的和对性能影响最大的往往是图片资源,其次是控件资源。相对来说,其他的资源的影响会小一点。这里我就先对图片资源的优化进行一下讲解,如果有什么说的不对的,希望大神指正一下。
下载gif-drawable包和Demo的链接:http://pan.baidu.com/s/1eQxVKRo 本帖原创,转载的朋友请注明转载地址》:http://www.cnblogs.com/zxxiaoxia/ 好久没有写博客了,今天来更新一下。
1 package com.zx; 2 3 import java.io.FileInputStream; 4 import java.io.IOException; 5 import java.
首先准备一个JSON格式的字符串 * String JsonStr = "{object:{persons:" + "[{name:'呵呵',image:'http://10.0.159.132:8080/Web/s1.
实现该方法需要导入一些jar包 可以去一下地址下载: http://pan.baidu.com/s/1hqrJF7m /** * 实用工具类来获取服务器资源 * * get方法传送数据 * * 1、通过path设定传送方式 * 2、创建客户端 * 3、得到输入流 * ...
/** * 通过Get方法来向服务器传值和获取信息, * 这里举例假设的前提是,链接上服务器,服务器直接发送数据给本地 * * 大体的思路: * 1、首先通过URL地址来获得链接的借口 * 通过接口,来设置链接超时的时间,请求方式,是否可以输入输出数据 * 得到读取服务器内容的...
1 package tems; 2 3 import java.text.SimpleDateFormat; 4 import java.util.Arrays; 5 import java.
/** * 约瑟夫环问题主要是考虑下标问题,只要解决了下标控制问题,这个题目就不难了 * 在这里我是分成了3中情况: * 1,下标小于剩余人数时:删除当前元素,并将下标后移 * 2.下标大于剩余人数时:用下标对剩余人数取于,删除元素,并下移下标 * 3.
/* * java 作Oj题目是会有输入若干数据的情况,不好判断输入结束符, * 类似于C语言中的EOF符号 * 在这里提供了一种方法 * */ 1 import java.util.Iterator; 2 import java.
/*TreeSet * treeSet存入数据后自动调用元素的compareTo(Object obj) 方法,自动对数据进行排序 * 所以输出的数据是经过排序的数据 * 注:compareTo方法返回值有:负数,零,正数。
/*HashSet 基本操作 * --set:元素是无序的,存入和取出顺序不一致,元素不可以重复 * (通过哈希值来判断是否是同一个对象) * ----HashSet:底层数据结构是哈希表, * 保证数据唯一性的方法是调用存入元素的hashCode()方法 * 和equals(Obj...
/*list 基本操作 * * List a=new List(); * 增 * a.add(index,element);按指定位置添加,其余元素依次后移 * addAll(index,Collection);在从指定位置开始添加一系列元素,其余元素依次后移 * 删 * a.
/* * 多线程-消费者和生产者模式 * 在实现消费者生产者模式的时候必须要具备两个前提,一是,必须访问的是一个共享资源,二是必须要有线程锁,且锁的是同一个对象 * */ 1 /*资源类中定义了name(名字):用来区分消费者还是生产者 2 * 定义了flag标记:用来...
/* * 异常处理机制 * 1.分类:Error和Exception * Error错误是JVM自动报错的,程序员无法解决例如开数组过大int a[]=new int [1024*1024*1024]; * Exception错误时程序员要解决的问题,例如指针越界,零做除数 * 2.
/* * 内部类 * */ 1 class OutClass{ 2 //定义外部类的成员变量 3 private int x=1; 4 //定义外部类函数 5 public void methodOut(){ 6 System.
/*上转型和下转型(对象的多态性) *上转型:是子类对象由父类引用,格式:parent p=new son *也就是说,想要上转型的前提必须是有继承关系的两个类。 *在调用方法的时候,上转型对象只能调用父类中有的方法,如果调用子类的方法则会报错 *下转型:是父类向下强制转换到子类对象 *前提是该父类对象必须是经过上转型的对象。
接口中常量的修饰关键字:public,static,final(常量)函数的修饰关键字:public,abstract如果没有写全,系统在编译时会自动加上接口中的所有成员都是public接口中的方法,都是抽象方法, * 接口是不可以创建对象,因为有抽象方法;子类如果只实现部分接口的抽象方法,则子类是...
抽象类和抽象方法之间的关系有抽象方法的类,一定是抽象类;抽象类不一定有抽象方法当子类继承抽象类时,必须要将抽象类中的抽象方法全部实现(或者称为重写),否则子类依然是抽象类因为子类是继承父类全部内容,所以也就相当于子类中也有了抽象方法,通过重写,可以将抽象方法覆盖。
单例设计模式:解决一个类在内存中只存在一个对象 多用于环境变量设置等 单例模式的要求:1.只能有一个对象,禁止其他程序建立该类对象 2.要提供外界对对象的访问方式 解决办法:1.将构造方法私有化,可以禁止其他程序建立该类对象 2.在本类中自定义一个私有对象。
在这里我们谈论一下构造代码块,构造函数和普通函数的区别和调用时间。构造代码块:最早运行,比构造函数运行的时间好要提前,和构造函数一样,只在对象初始化的时候运行。构造函数:运行时间比构造代码块时间晚,也是在对象初始化的时候运行。
最近看了一下学习资料,感觉进制转换其实还是挺有意思的,尤其是对于负数这一方面。 下面和大家分享一下,这里只写了十进制到二进制的转换,其实都是同样的道理 1 public class Test1 { 2 3 public static void main(String[]...
主要分两个接口:collection和Map 主要分三类:集合(set)、列表(List)、映射(Map)1.集合:没有重复对象,没有特定排序方式2.列表:对象按索引位置排序,可以有重复对象3.映射:有一个键对象和一个值对象,键不可重复,值可以重复 hashtable 和hashmap区别 1 HashMap不是线程安全的 2 HashTable是线程安全的一个Collection。
集合的操作 Iterator、Collection、Set和HashSet关系 Iterator
主要分两个接口:collection和Map 主要分三类:集合(set)、列表(List)、映射(Map)1.集合:没有重复对象,没有特定排序方式2.列表:对象按索引位置排序,可以有重复对象3.映射:有一个键对象和一个值对象,键不可重复,值可以重复 这里我们介绍List list是接口,linklist和arraylist是list的实现类 linklist是用的链表来实现的,arraylist是用数组来实现的 ArrayList:缺点:内存使用量要大一些,添加删除元素效率较低。
synchronized() 在线程运行的时候,有时会出现线程安全问题例如:买票程序,有可能会出现不同窗口买同一张编号的票 运行如下代码: public class runable implements Runnable { //此处定义变量是一个对象的变量,run()函数调用的时候不...
一、中断线程 1.Thread.sleep()让线程进入睡眠状态,放弃CPU的占用暂停若干毫秒使用方法: public class runable implements Runnable { @Override public void run() { for(int i=1;i
一共有两种方法Thread类和Runnable接口,相对来讲,更趋向于用Runnable因为一个类可以实现多个接口,但是只能继承一个类,所以相对来说倾向用Runnable 第一种方法:用Thread其实就是对父类Thread的继承和重写里面的方法基本的思路还是java的继承多态思想首先就是自...
package copyfile; import java.io.*; public class copy { public static void main(String[] args) throws IOException { copyFile("d:/new/a.
package copyfile; import java.io.*; public class copy { public static void main(String[] args) throws IOException { copyFile("d:/new/a.
首先先 说明一下接下来要用到的,环境变量中的path和classpath的区别 1.path路径用来告诉计算机.exe文件的路径,classpath路径是用来告诉计算机.class文件的路径 2.系统运行.
1、 下载sdk压缩包,解压后显示 2、双击SDK Manager.exe 程序进入如下界面 注:有的童鞋可能遇到如下问题 一般将一和二两种操作都完成就OK了 一、 更新sdk,遇到了更新下载失败问题: Fetching https://dl-ssl.