项目点滴
文章平均质量分 60
张庚
这个东西的原理是什么呢?
展开
-
文件排序工具类
package com.zhanggeng.yes;import java.io.File;import java.text.Collator;import java.util.Arrays;import java.util.Comparator;/** * 文件排序工具类 * */public class FileSorter implements Comparato原创 2015-04-03 17:41:15 · 1240 阅读 · 0 评论 -
Android中点击按钮后隐藏输入法
在Android中登录界面、发表回复、评论的时候,常常有这样的需求:当点击登录,评论后,需要隐藏输入法。如下图所示: 实现方式://将输入法隐藏,mPasswordEditText 代表密码输入框InputMethodManager imm =(InputMethodManager)getSystemService( Context.INPUT_METHO原创 2015-05-18 07:52:46 · 5118 阅读 · 1 评论 -
Android 性能优化(六)——资源文件的存放
The following images appear in both -nodpi and in a density folder: a.png, icon.pngIssue: Finds icons that appear in both a -nodpi folder and a dpi folder Id: IconNoDpiBitmaps that appear in drawable-原创 2015-05-24 18:15:40 · 1060 阅读 · 0 评论 -
Android程序Crash异常处理
在写程序时,肯定会碰到各种问题,在解决这些问题肯定要去看控制台打印的异常信息,根据控制台打印的异常信息来进行针对性的解决。那么要解决程序运行在用户手机上崩溃的问题,必须得找到问题的原因。因此就要收集崩溃信息,也就是log日志。Android程序Crash时我们可以做的操作: 1、将Crash信息存到本地,然后上传到服务器,根据上传的异常信息进行针对性的处理; 2、系统自带的Crash界面是很不友原创 2015-06-09 22:53:19 · 3521 阅读 · 0 评论 -
Android客户端与服务器交互中的token
学习TokenToken是什么? Token是服务端生成的一串字符串,以作客户端进行请求的一个令牌,当第一次登录后,服务器生成一个Token便将此Token返回给客户端,以后客户端只需带上这个Token前来请求数据即可,无需再次带上用户名和密码。Token的引入—— Token是在客户端频繁向服务端请求数据,服务端频繁的去数据库查询用户名和密码并进行对比,判断用户名和密码正确与否,并作出相原创 2015-07-23 07:45:31 · 68402 阅读 · 14 评论 -
git-osc自定义控件之:CircleImageView
git-osc自定义控件之:CircleImageView一、CircleImageView的使用在项目中可以发现,用户的头像都是圆形的,感觉很好奇,昨天终于发现了,原来是自定了一个ImageView,先学习下如何使用,使用步骤如下:创建属性文件:attrs.xml,创建路径为—— res/values/attrs.xml ,格式如下:<?xml version="1.0" encoding="u原创 2015-07-23 07:42:33 · 2566 阅读 · 0 评论 -
自定义控件之:PagerSlidingTabStrip
在应用中可以发现各个栏目之间就是靠滑动选项卡来进行区分的,比如:发现中的推荐项目、热门栏目、最近通知。在使用的时候,我们可以左右滑动屏幕来进行切换,这种操作非常的优雅。经过学习源码,发现这是使用了自定义控件PagerSlidingTabStrip来完成的。因此决定学习一下这个自定义控件。开源项目地址: PagerSlidingTabStrip先学习一下这个控件如何使用:声明PagerSliding原创 2015-07-23 14:36:21 · 2123 阅读 · 0 评论 -
android:exported 属性详解
为什么会把这个属性单独拿出来学习呢?是因为我在用360漏洞扫描应用时,扫描结果,出来一个android:exported属性,其实之前根本不知道这个属性,更不知道这个属性用来干嘛的,详情见下图: 因此,我决定查了官方API,学习了一下这个属性!android:exported 是Android中的四大组件 Activity,Service,Provider,Receiver 四大组件中都会有的翻译 2015-06-11 17:47:31 · 183353 阅读 · 11 评论 -
针对实体编程
在项目中,之前同事Json解析的时候,之前都是这么写的 try { JSONArray list = response.getJSONArray("list"); if(list.length() == 0){ img_nocontent.setVisibility(View.VISIBLE);原创 2016-01-18 14:55:28 · 1493 阅读 · 0 评论 -
向每一个错误致敬——用户上传破损图片时,你的App会怎样?
问题:在上传图片的时候,如果用户选择了一张破损图片上传,你怎么应对?凶案现场:某年某月某日,我正在写代码时,一人拿着手机,怒气冲冲的朝我跑过来,吼道:“怎么回事儿,我上传图片的时候,点这个图片图片就闪退了,点那个图片没事儿。” 我迫不及待的看了下,我靠,还真这么诡异。为什么会这样?二话不说,插上电脑,打开终端,输入: adb logcat *:E于是,错误尽览无余:很明显在EyishengAPI.j原创 2016-01-18 23:11:55 · 2154 阅读 · 1 评论 -
向每一个错误致敬——Android HotFix
Android HotFix —— AndFix使用说明项目以飞快的速度迭代,2周进行一次迭代升级。每次开发完功能跑通,在现有机型上测试没问题的话,就提交市场。在以极快的速度迭代的时候,避免不了出现各种问题,传说中的bug 或,重大bug,需要紧急修复 或,可以下次迭代修复的bug 或,影响用户体验的行为出现bug后,我们的一贯做法: 发布紧急版本,等待用户下载更新。可是,并原创 2016-01-16 19:58:15 · 8250 阅读 · 3 评论 -
更好的事件传递方式——EventBus
对于引入第三方框架总是持一种保守的态度,因此在开发中对于一些跨组件之间的通信,常常采用的方式有: 接口回调 广播 startActivityOnResult 这些方式同样可以方便的完成组件之间的通信。只是,代码量越来越大,维护起来愈发的艰难: 穷则思变以下是对EventBus的学习记录EventBus 是什么?EventBus 是一个 Android 事件发布/订阅框架原创 2016-02-18 14:58:27 · 4487 阅读 · 0 评论 -
如何正确的使用SharedPreferences?
这是我最近碰到过的一个问题,之前并没有一个清晰的认识!唯一的印象是,SharedPreferences 是可以用来存取数据。直到前些日子,在360漏洞扫描应用后,才意识到这个问题,如何正确的使用SharedPreferences呢?以下是360漏洞扫描的信息:关于SharedPreferences顺便再复习一下:SharedPreferences 是Android 中的内置AP原创 2015-06-18 10:31:10 · 18341 阅读 · 0 评论 -
Android性能优化(一)——数据结构优化
数据结构优化,使用Sparsearray 替换HashMap 资料: Android应用性能优化之使用SparseArray替代HashMap Android中的稀疏数组:SparseArray问题:Sparsearray之所以比HashMap高效的原因是什么?结合两篇博客以及HashMap和Sparsearray的源码得出以下结论: 1、在数据存储方面,Sparsearray进行了优化原创 2015-05-19 07:39:29 · 2530 阅读 · 0 评论 -
定位ListView到指定的某一个条目
在项目中碰到这样的一个需求:当一个手机竖屏时,listview的第一个可见项为第3项。如果手机转为横屏,让listview的第一第一个可见项目也为第3项。第一步:Activity实现OnScrollListener 接口,实现相应的方法:当屏幕滑动为静止状态的时候,记录下第一个可见条目。@Override public void onScrollStateChanged(Ab原创 2015-04-03 17:06:33 · 6921 阅读 · 0 评论 -
双击返回键退出应用
在使用应用的时候,经常碰到有些应用是双击返回键即可退出应用,这几天在学习Git-osc-china的源码,刚好碰到了这个代码,收集至此,以便日后使用。如何给应用添加双击退出功能:1、在项目中引入 DoubleClickExitHelper.javapackage com.china.webview;import com.example.webview.R;import an原创 2015-01-28 16:14:38 · 1314 阅读 · 0 评论 -
Android事件分发机制(资料收集)
Android事件分发机制完全解析,带你从源码的角度彻底理解(上)Android事件分发机制完全解析,带你从源码的角度彻底理解(下)原创 2015-04-08 17:54:34 · 890 阅读 · 0 评论 -
Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK
今天在项目中碰到的一个错误:项目中涉及到很多Activity之间相互跳转的代码,如下所示的代码,感觉很繁琐,因此想到了封装一下:Intent intent = new Intent(SplashActivity.this , MainFragmentActivity.class);startActivity(intent);封装在了另一个类:UIHelper.java中Int原创 2015-04-09 18:54:23 · 49923 阅读 · 26 评论 -
如何查看Android设备的CPU架构信息
oem@zhang:~$ adb shellshell@msm8610_s3_cp5311_c:/ $ cat /proc/cpuinfoProcessor : ARMv7 Processor rev 3 (v7l)processor : 0BogoMIPS : 38.40processor : 1BogoMIPS : 38.40Features : swp half thumb原创 2015-04-15 14:47:13 · 72873 阅读 · 2 评论 -
Android混淆资料收集
0、Android开发之反编译与防止反编译 1、Android代码混淆指南 2、Android代码混淆之混淆规则原创 2015-05-08 15:16:28 · 651 阅读 · 0 评论 -
MediaStore资料收集
1、Android多媒体分析(一)MediaScanner 2、 Android多媒体分析(二)MediaStore 3、 Android多媒体分析(三)通过MediaStore获取Audio信息原创 2015-05-04 15:05:14 · 973 阅读 · 0 评论 -
Android 中新的数据传递机制:Parcelable(资料收集)
Java中的序列化机制,是通过Serializeable接口,其作用是能将数据对象存入字节流当中,在需要时重新生成对象。主要应用是利用外部存储设备保存对象状态,以及通过网络传输对象等。在Android系统中,定位为针对内存受限的设备,因此对性能要求更高,另外系统中采用了新的IPC(进程间通信)机制,必然要求使用性能更出色的对象传输方式。在这样的环境下,Parcel被设计出来,其定位就是轻量级的高效原创 2015-05-04 18:55:08 · 600 阅读 · 0 评论 -
Android 性能优化(七)——MAT使用
最近在项目中碰到一个问题:严重的OOM!这使我非常的苦恼,每次程序运行后,通过eclipse的 heap dump 工具可以看到划过几页后,程序的内存就会暴涨,由刚启动时的20M涨为120M并且当我销毁掉Activity后,内存不会减少,内存一直维持在 120M左右,这很明显的——有一些东西留在了内存中没有被释放,因此我要寻找解决方案:如何可以知道留在内存里的是什么?经过查找,找见了真有这么一款工具原创 2015-05-27 11:01:13 · 1444 阅读 · 0 评论 -
Android性能优化(五)——利用软引用和弱引用
第一次接触软引用和弱引用,是在看一个视频项目的时候碰到的那个时候没有太在意,也就过去了; 第二次接触他们是在,一个开源项目的源码里,感觉这东西是不是有点用呢? 第三次接触软引用和弱引用,是在自己的项目里,因为最近一直被一个OOM困扰,所以想好好研究一下,如果来优化性能。通过Eclipse自带的内存分析工具,发现程序一旦运行,内存就暴涨,想到,是否可以这样做:让那些不需要的内存,自动被回收掉,腾出原创 2015-05-21 23:14:15 · 2931 阅读 · 0 评论 -
Android 绘图中的抗锯齿处理
今天在读程序源码的过程中到一段这样的代码:canvas.setDrawFilter(new PaintFlagsDrawFilter(0, Paint.ANTI_ALIAS_FLAG|Paint.FILTER_BITMAP_FLAG)); 不太明白,Google了一下,原来是进行:抗锯齿处理的。同时,学习了一下Android绘图中的两种抗锯齿处理方式。首先要搞明白锯齿是什么?如下图所示,左边为未经过原创 2015-05-28 19:21:28 · 7897 阅读 · 0 评论 -
向每一个错误致敬——当心你的参数
每一次犯错,都是一次蜕变;每一个bug,都是一次成长。 入参处,对参数进行合法性校验; 使用不可靠的数据时,对该数据进行校验; 在入参处,一定要对参数进行合法性校验。且看如下代码,看看有什么问题!public class InitChatActionDataUtil { public static ArrayList<String> initGridListData(Str原创 2016-03-24 17:58:36 · 6289 阅读 · 0 评论