随笔分类 - Android
摘要:针对ListView有setEmpty方法来设置加载失败时的默认显示页面,但扩展性太差。有没有通用性更强,适用为任意布局添加加载中等状态布局的方法呢?答案是肯定的,接下来我们就去实现这样一个帮助类。申明LoadingViewHelper类,由于加载成功显示的布局为目标显示界面,所以采用构造方法注入。对于加载中以及加载失败显示的布局,申明为抽象方法,由子类决定是否实现,这样增加了扩展性。update...
阅读全文
摘要:编写适配器代码时常常被以下几个问题所困扰:1.业务层和适配器中对同一组数据进行维护,难以管理2.在业务层针对数据进行修改后必须通知适配器更新,否则提示The content of the adapter has changed but ListView did not receive anotification3.业务层修改数据时充斥大量的非空&数据标准化等冗余代码针对前两个问题,可以将数据交由适...
阅读全文
摘要:AssetManager的addAssetPath负责将另一个apk的资源文件加载进当前应用,这里由于是api隐藏方法,采用反射方式调用。查看addAssetPath方法注释,允许传递的路径为资源目录或者zip文件。/** * Add an additional set of assets to the asset manager. This can be * either a director...
阅读全文
摘要:推荐优先本地搜索浏览 Android适配器之DataModifyHelper数据操作类的封装一般使用pageAdapter需要实现getcount、isViewFromObject、instantiateItem、destroyItem等默认函数,其实完全可以抽取共有代码到父类当中。/** * Created by Xiaoxuan948 on 2015/10/27. * Desc: * 提示:先...
阅读全文
摘要:推荐优先本地搜索浏览 Android适配器之DataModifyHelper数据操作类的封装定义BaseAdapter抽象基类,抽取共性部分,即实现getCount、getItem、getItemId观察源码可知,在构造函数中实例化DataModifyHelper对象,该对象负责数据的增删改查等操作。适配器中提供getDataModifyHelper方法,供外界获得操作数据的DataModifyH...
阅读全文
摘要:过去由于设计湿的吹毛求疵,往往不得不多做很多工作。比如下面的这张图片,很典型的按钮背景图片,一般Android会处理成.9文件以供项目使用。但事情往往没有这么简单,需求会要求在不同的地方高度不一致,这个时候.9文件的弱点就出现了。我们拿到UI那边的标注以及切图时,会默认高度是不会拉伸或者压缩的,下面截图中右中为期望效果。但是如果我们在应用中使用同一张.9图,就不能确保图片是否会高度拉伸。作为替代方...
阅读全文
摘要:设置软件多开的核心在于设置applicationId不同,因为Android以applicationId作为进程标识,必须唯一,这里只需要打包时动态修改下即可。1.设置build.gradle的productFlavorsproductFlavors { office { applicationId "com.example.app" buildConfigFie...
阅读全文
摘要:推荐优先本地搜索浏览 Android适配器之DataModifyHelper数据操作类的封装添加Gradle依赖compile 'com.android.support:appcompat-v7:23.2.1'compile 'com.android.support:recyclerview-v7:23.2.1'备注:recyclerview的版本号要与appcompat的一致,此处为: v7:2...
阅读全文
摘要:先来张经典图镇楼... 1.onWindowFocusChanged()的调用时机 创建Activity的调用顺序 锁定屏幕 解锁屏幕 该方法在Activity窗口获得或失去焦点时被调用,例如创建时首次呈现在用户面前;当前Activity被其他Activity覆盖;当前Activity转到其他Act
阅读全文
摘要:创建GsonResponsePasare解析类,class GsonResponsePasare { T deal(String response) { Type gsonType = new TypeToken>() { }.getType(); CommonResponse commonResponse = new Gson().fromJson...
阅读全文
摘要:view.getRootView的官方解释是Finds the topmost view in the current view hierarchy那这个顶层的View究竟是xml的最外层布局,还是getDecorView,抑或其他的呢?下面通过测试来了解getRootView的真正含义,定义xml文件如下: //... 定义测试源码,lg.e("getDecorView id:" +...
阅读全文
摘要:从计算机的数值表示上讲,0x开头的其实并不是所谓颜色代码的表示方法,而是16进制数的标准写法,譬如0xA就是十进制的10。而#开头的六(或三)位十六进制数是在设计领域(如CSS以及一些绘图软件)中颜色代码的表示方法。如果我们只考虑24位颜色的话,电脑中每个像素的颜色其实就是用3个字节(24位)的无符号整数来存储的。所以用0x开头的“颜色代码”,也就是这个十六进制数表示的数值,其实就是颜色在内存(显...
阅读全文
摘要:定义用于Android开发的一种特殊的图片格式,好处在于可以定义图片中哪些区域可以拉伸,哪些区域不可以拉伸,同时可以把显示内容区域的位置标示清楚。下面是普通的png资源与.9.png的资源区别:观察可以看到,.9图片的外围有一些黑色的线条,放大的图像如下所示:可以比较明显的看到上下左右分别有一个像素的黑色线段,这里分别标注上序号。其中,序号1和2标识可以拉伸的区域,序号3和4标识内容区域。一旦设定...
阅读全文
摘要:1、@[<package_name>:][<resource_type>/]<resource_name>和 @+[<package_name>:][<resource_type>/]<resource_name>, @android:id 简单的概括就是: @[<resource_type/],r
阅读全文
摘要:默认的情况下,程序启动时,会有一个黑屏的时期,原因是,首个activity会加载一些数据,比如初始化列表数据等。具体步骤如下: 1./res/values/styles.xml 在 Theme 中,添加一个 android:windowBackgrounds 属性,设置需要的图片2.在 AndroidManifest.xml 中设置Theme到首个启动的Activity下3.添加 /res/dra...
阅读全文
摘要:使用Gradle编译C/C++源码步骤 申明NDK工具类,内部定义native方法package com.coca.firstdemo;/** * Created by Administrator on 2016/6/6. */public class JniShareUtils { public native String getLogCount(String params);}定位至项目...
阅读全文
摘要:1.生成.h头文件,配置.c文件(可查看Android之JNI:Android Studio使用Gradle编译C/C++源码)2.编写Android.mk//Android.mk简介参考链接:http://blog.sina.com.cn/s/blog_602f8770010148ce.htmlLOCAL_PATH:= $(call my-dir) //Android.mk 文件首先必须定义L...
阅读全文
摘要:ClassLoader双亲代理模型加载类的特点及作用JVM以及Dalvik均是通过ClassLoader加载类,其源码如下protected Class loadClass(String className, boolean resolve) throws ClassNotFoundException { Class clazz = findLoadedClass(className); ...
阅读全文
摘要:以微信安装包为例讲解: 右击APK文件,以压缩包方式打开,截图如下: 源码存放在classes.dex文件中。我们可以直接查看res下面的图片文件,但对于源代码无法查看,AndroidManifest.xml清单等xml文件打开也是乱码。 需要用到的工具包dex2jar、jd-gui、apktool
阅读全文
摘要:概述摘自官方文档:A utility class to help log timings splits throughout a method call. Typical usage is:TimingLogger timings = new TimingLogger(TAG, "methodA"); // ... do some work A ... timings.addSplit("work...
阅读全文

浙公网安备 33010602011771号