- 博客(110)
- 资源 (4)
- 收藏
- 关注
原创 .gitignore无效,不能过滤某些文件
利用.gitignore过滤文件,如编译过程中的中间文件,等等,这些文件不需要被追踪管理。 现象: 在.gitignore添加file1文件,以过滤该文件,但是通过Git status查看仍显示file1文件的状态。 原因: 在git库中已存在了这个文件,之前push提交过该文件。 .gitignore文件只对还没有加入版本管理的文件起作用,如果之前已经用git把这些文件纳入了版本库,就不
2017-03-20 09:48:46
479
原创 android 定位服务
目前,对于定位主要有三种实现方式:通过网络、基站和GPS来获取到所有玩家的经纬度,然后传送给服务器计算,以此来实现附近的人信息展示功能。最开始做的时候,使用了Android自带的定位服务:LocationManager locationManager=(LocationManager) getSystemService(Context.LOCATION_SERVICE);locationManage
2017-03-10 13:42:14
459
原创 MeasureSpec中三种模式
MeasureSpec.EXACTLY:使用measureSpec中size的值作为宽高的精确值 当我们将控件的layout_width或layout_height指定为具体数值时如andorid:layout_width=”50dip”,或者为FILL_PARENT是,都是控件大小已经确定的情况,都是精确尺寸。 MeasureSpec.AT_MOST:使用measureSpec
2017-02-23 14:18:34
502
原创 tabhost 实例
@BindView(android.R.id.tabs) TabWidget tabs; @BindView(R.id.frame1) FrameLayout frame1; @BindView(R.id.frame2) FrameLayout frame2; @BindView(android.R.id.tabcontent) FrameLa
2017-02-16 16:04:29
349
原创 android butterkinfe 8.5.1 配置 超简单
在AS的依赖文件中寻找butterknife库,并下载第一个库。compiler和plugin不用下。 工程gradle中添加库文件 项目gradle中申请plugin 在gradle中依赖库中添加
2017-02-16 14:31:23
555
原创 git commit时出现的问题The file will have its original line endings in your working directory
我最近使用了新的代码托管工具,把之前在oschina上的代码迁移到coding.net上去。提交代码时有一个文件提交失败。 错误信息是 LF will be replaced by CRLF in git -the file will have its original line endings,The file will have its original line endings in yo
2017-02-14 11:49:13
8296
2
原创 jni和ndk区别
JNI是Java语言提供的Java和C/C++相互沟通的机制,Java可以通过JNI调用本地的C/C++代码,本地的C/C++的代码也可以调用java代码。JNI 是本地编程接口,Java和C/C++互相通过的接口。Java通过C/C++使用本地的代码的一个关键性原因在于C/C++代码的高效性。 NDK是一系列工具的集合。它提供了一系列的工具,帮助开发者快速开发C(或C++)的动态库,并能自动将s
2017-02-11 20:32:15
555
原创 androidStudio出现Executing tasks: app:assembleDebug
打正式包时有时会出现Executing tasks: [:app:assembleDebug 错误。因为你gradle文件配置有问题。 例如我上次在module的gradle中添加了单元测试的配置信息,原则上正式版不应该包含测试信息testApplicationId“com.cn.skypiea.test" testInstrumentationRunner "android.test.Inst
2017-02-09 17:46:40
47669
6
原创 android点击事件分发步骤
首先进入Activity的dispatchTouchEvent方法。默认会调用userInteraction方法,这里你可以重写此方法处理用户每次点击的需求。其次判断此view下面是否还有可以点击的view。若有,返回true把事件分发给下层view没有调用onTouchEvent方法。 public boolean dispatchTouchEvent(MotionEvent ev) {
2017-02-08 10:46:53
429
原创 android Animation,setTransactionX 实际位置
使用startAnimation方法在一段时间内进行连续的动画效果,当然里面可以进行左右滑动。无论动画效果怎样背景位置跟没有开始动画效果一样的。fullAfter方法设置之后只能改视图上位置而没有改真正位置。使用setTransactionX方法在一个时刻上实现左右移动。你使用好几次setTransactionX方法屏幕都会按照没有Transaction之前的位置移动相应像素。
2017-02-07 16:27:34
664
转载 dispatchTouchEvent, interceptTouchEvent,onTouchEvent 详细分析
跟touch事件相关的3个方法: public boolean dispatchTouchEvent(MotionEvent ev); //用来分派event public boolean onInterceptTouchEvent(MotionEvent ev); //用来拦截event public boolean onTouchEvent(MotionEvent ev);
2017-02-06 13:47:18
1388
原创 android 保存图片到指定文件
/** 保存方法 */ public void saveBitmap() { Log.e(TAG, "保存图片"); File f = new File("/sdcard/namecard/", picName); if (f.exists()) { f.delete(); } try { FileOutputStream out = new Fi
2017-02-05 18:00:49
972
转载 获取应用专属缓存目录
获取Android应用专属缓存存储目录SD卡缓存目录当应用需要将图片或者文件缓存到SD卡中时要去申请创建目录,有下面几种途径 我们可以通过API调用应用专属目录:// /storage/emulated/0/Android/data/app_package_name/files/PicturesContent.getExternalFilesDir(Environme
2017-02-05 14:54:10
1148
转载 安卓终止线程
有三种方法可以使终止线程。 1. 使用退出标志,使线程正常退出,也就是当run方法完成后线程终止。 2. 使用stop方法强行终止线程(这个方法不推荐使用,因为stop和suspend、resume一样,也可能发生不可预料的结果)。 3. 使用interrupt方法中断线程。 1. 使用退出标志终止线程 当run方法执行完
2017-02-04 17:18:35
1990
原创 dispatchTouchEvent, interceptTouchEvent 区别
默认情况下dispatchTouchEvent返回true,interceptTouchEvent返回false。事件会向下分发而且不会拦截。所以默认情况不能发现这两个方法的区别。如果 dispatchTouchEvent 返回 false ,则回传给 父View 的 onTouchEvent 事件处理。此时没有完全进入interceptTouchEvent就返回父View。如果
2017-02-03 09:57:47
600
转载 android 事件传递
http://blog.youkuaiyun.com/morgan_xww/article/details/9372285/跟touch事件相关的3个方法:public boolean dispatchTouchEvent(MotionEvent ev); //用来分派eventpublic boolean onInterceptTouchEvent(MotionEvent
2017-02-03 09:40:56
219
原创 Mac 用c实现helloworld
先创建一个demo.c文件#include<stdio.h>#include<stdlib.h>int main(){printf("hellow c\n");}打开终端 command+空格 弹出对话框输入terminal 就ok了进入c文件所在目录(这里我的c文件在c_test文件夹中) cd ~/c_test编译c源文件gcc demo.c如果没有报错说明编译成功,接下来运行./a.o
2017-01-31 09:24:18
935
原创 自定义 发送广播,并接受广播
接受广播@Overridepublic void onCreate() {IntentFilter intentFilter = new IntentFilter();intentFilter.addAction("android.intent.action.SKIP");mInnerReceiver = new InnerReceiver();registerReceiver
2017-01-28 11:49:08
388
原创 android level-list 笔记
有时候,我们为了在一个ImageView中显示不同的图片,往往会使用: if (条件1){ image.setBackground(R.id.xxx1); }else if (条件2){ image.setBackground(R.id.xxx2); } ... 可以用另一个简便的方法实现相同的功能 首先,在res/drawable下建立
2017-01-28 09:40:50
303
原创 正确删除list
遍历删除List中的元素有很多种方法,当运用不当的时候就会产生问题。下面主要看看以下几种遍历删除List中元素的形式:1.通过增强的for循环删除符合条件的多个元素2.通过增强的for循环删除符合条件的一个元素3.通过普通的for删除删除符合条件的多个元素4.通过Iterator进行遍历删除符合条件的多个元素[java] view plain copy /** * 使用增强的for循环 *
2017-01-26 14:03:06
422
原创 androidStudio com.android.ide.common.process.ProcessException解决方法
sourceSets { main {// java.srcDirs = [‘src’] // resources.srcDirs = [‘src’] // aidl.srcDirs = [‘src’] // renderscript.srcDirs = [‘src’] //
2017-01-24 13:45:32
1538
原创 android 启动广告 适配几种方案
众所周知android手机屏幕各式各样,做满屏启动广告需要适配一大堆屏幕,图片内容必须完整地显示出来,不应该变形。 虽然自己不是什么大牛,纯粹为了学习想研究一下怎么做满屏图片较合理写下此文章第一种方案ImageView firstImg;firstImg.setScaleType(ImageView.ScaleType.FIT_CENTER); firs
2017-01-22 12:33:52
3898
转载 aidl 笔记
关于IPC应该不用多介绍了,Android系统中的进程之间不能共享内存,那么如果两个不同的应用程序之间需要通讯怎么办呢?比如公司的一个项目要更新,产品的需求是依附于当前项目开发一个插件,但是呢这个插件功能以及界面比较复杂,不能和当前项目在一个进程中,同时呢,还要用到当前项目中已经写好了的一些东西,那么因为新开发的依附于当前项目的插件和当前项目不是一个进程,因此不能共享内存,就出现了问题,于是,需要
2017-01-18 18:42:12
266
3
原创 android 解锁屏监听 笔记
在做解锁监听程序时,一开始采用监听屏幕SCREEN_ON和SCREEN_OFF这两个action。 但奇怪的是,这两个action只能通过代码动态的形式注册,才能被监听到,使用AndroidManifest.xml 完全监听不到。 百度后发现这是PowerManager那边在发这个广播的时候做了限制,限制只能有register到代码中的receiver才能接收。 后来就找各种能静态注册Andr
2017-01-18 12:05:33
417
原创 单元测试 使用场景
业务和数据库操作都需要进行单元测试 单元测试应该在单独的src内进行,当然也可以在当前项目内进行但随着项目容量扩大容易长生混乱。所以应该单独创建一个单元测试类来测试业务,数据库。AS则很好的处理了此类情况,你不必像eclipse一样单独创建一个测试工程,而是AS已经帮你在src里面添加了有三个文件。 main是你的主要工程文件,里面有java,res,manifest文件。而androidTes
2017-01-15 18:55:52
1528
原创 md5加密
//1.获取数据摘要器 //arg0 : 加密的方式 MessageDigest messageDigest = MessageDigest.getInstance(“MD5”); //2.将一个byte数组进行加密,返回的是一个加密过的byte数组,二进制的哈希计算,md5加密的第一步 byte
2017-01-14 15:44:06
246
原创 android属性 命名空间 笔记
xmlns:android=”http://schemas.android.com/apk/res/android” xmlns:tools=”http://schemas.android.com/tools” xmlns:xmls=”http://schemas.android.com/apk/res-auto”其中android 代表你从android库文件中找相应的属性
2017-01-14 11:32:15
268
原创 android属性 笔记
xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" xmlns:xmls="http://schemas.android.com/apk/res-auto"其中android 代表你从android库文件中找相应
2017-01-14 10:50:38
243
原创 Error:Execution failed for task ':app:mergeDebugResources'.
Error:Execution failed for task ':app:mergeDebugResources'.> Error: java.util.concurrent.ExecutionException: com.android.ide.common.process.ProcessException: 因为AS对资源文件的管理比较严格,一部分ec
2017-01-14 10:44:44
324
原创 inflate方法
View inflate(Context context, int resource, ViewGroup root) 方法中如果你view中没有root对象,后面你只能通过addview 方式在root上加view。如果传递root对象,次view已经添加到root里面
2017-01-13 13:24:12
372
原创 & 和 &&
&和&&都是逻辑运算符,都是判断两边同时真则为真,否则为假;但是&&当第一个条件不成之后,后面的条件都不执行了,而&则还是继续执行,直到整个条件语句执行完为止。如&&例子中的i++>5被执行了,而i++5和i++
2017-01-13 11:53:50
429
原创 android 两种上下文
getApplicationContext,BaseContextapplicationContext 是整个application的上下文,没有对应具体的activitybaseContext 是某个activity的上下文,对应具体的activity例如,操作dialogue时需要操作窗口,而窗口跟activity绑定,必须使用activity的上下文
2017-01-10 18:19:37
356
原创 Java和JSON之间的转换
//一般数组转换成JSON @Test public void testArrayToJSON(){ boolean[] boolArray = new boolean[]{true,false,true}; JSONArray jsonArray = JSONArray.fromObject( boolArray );
2017-01-10 11:34:04
250
原创 更改 android app 第一个显示背景
不要试着给application添加style,虽然application默认帮你给所有activity设置属性但还是不能给第一个activity设置背景。在manifest或activity里面 设置style WelcomeThemename="BaseTheme" parent="Theme.AppCompat.Light.NoActionBar">
2017-01-06 17:34:55
1115
原创 scaletype 复习
1. SetScaleType(ImageView.ScaleType.CENTER); 按图片的原来size居中显示,当图片长/宽超过View的长/宽,则截取图片的居中部分显示 2. SetScaleType(ImageView.ScaleType.CENTER_CROP); 按比例扩大图片的size居中
2017-01-05 17:58:57
191
原创 service 和thread 关系
不少Android初学者都可能会有这样的疑惑,Service和Thread到底有什么关系呢?什么时候应该用Service,什么时候又应该用Thread?答案可能会有点让你吃惊,因为Service和Thread之间没有任何关系! 之所以有不少人会把它们联系起来,主要就是因为Service的后台概念。Thread,是用于开启一个子线程,在这里去执行一些耗时操作就不会阻塞主线程的运行。 Servic
2017-01-04 13:13:08
343
转载 android 进程类型
前台进程:即与用户正在交互的Activity或者Activity用到的Service等,如果系统内存不足时前台进程是最后被杀死的可见进程:可以是处于暂停状态(onPause)的Activity或者绑定在其上的Service,即被用户可见,但由于失去了焦点而不能与用户交互服务进程:其中运行着使用startService方法启动的Service,虽然不被用户可见,但是却是用户关心的,例如用户正在非音乐
2017-01-04 11:17:38
253
原创 两种广播接受方式
常驻型广播 当你的应用程序关闭了,如果有广播信息来,你写的广播接收器同样的能接收到,它的注册方式就是在你应用程序的AndroidManifast.xml 中进行注册,这种注册方式通常又被称作静态注册。这种方式可以理解为通过清单文件注册的广播是交给操作系统去处理的。示例代码如下:<!-- 订阅开机结束广播 --><receiver android:name=".receiver.BootCompl
2017-01-03 16:27:13
478
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人