自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(25)
  • 收藏
  • 关注

原创 ScrollView嵌套ListView,GridView等自动滚动的问题

ScrollView嵌套ListView,GridView,如果这些子控件很长超出了屏幕的高度,那么ScrollView会自动滚到底部,但是我们需要默认在顶部,需要在ListView和GridView上面的view中加入以下代码即可解决:view.setFocusable(true);  view.setFocusableInTouchMode(true);  view.r

2016-08-26 19:09:40 376

原创 让PopWindow弹出在某个View的正上方

刚开始看的时候,以为使用showAsDropDown (View anchor, int xoff, int yoff, int gravity)通过设置gravity就行,可是试了一下不管用,只有Gravity.RIGHT这个字段能起作用,就是从anchor的右下角开始弹出。后来只能另外想一个方法,就是通过showAsDropDown(View anchor,int xoff, in

2016-07-01 19:14:17 1103

原创 View滑动冲突的处理

常见的滑动冲突可以分为三种:一、外部滑动方向和内部滑动方向不一致,比如ViewPager嵌套ListView,之所以我们使用起来没问题是因为ViewPager内部已经处理过了,这里只是拿来举个例子。二、外部滑动方向和内部滑动方向一致,比如ScrollView嵌套ListView,我们用的时候没问题也是因为ScrollView内部已经处理了。三、上面两种情况的嵌套。对于第

2016-06-10 14:57:45 316

原创 View的事件传递机制

先说两个重要的概念:1.同一时间序列事件序列:即手指触摸屏幕产生ACTION_DOWN开始,其中包含不定数量的ACTION_MOVE等,以ACTION_UP结束,即手指离开屏幕那一刻。这就是一个事件序列。2.事件的传递顺序:当一个点击操作产生之后,事件最先传递给当前的Activity,由Activity的dispatchTouchEvent来进行事件的分发,具体的工作是由Activity内

2016-06-10 14:57:04 489

原创 关于scrollBy

scrollBy是基于View的当前位置去滑动,它调用的还是scrollTo方法。源码如下:public void scrollBy(int x, int y) {        scrollTo(mScrollX + x, mScrollY + y);    }其中mScrollX,mScrollY是View的当前位置。

2016-06-07 16:13:30 152

原创 泛型简要总结

泛型:  ArrayList  尖括号里面的就是泛型。        ArrayList中的E表示引用数据类型。泛型技术是给编译器使用的技术,用于编译时期,确保了类型的安全。运行时,会将泛型去掉,生成的class文件中是不带泛型的,这个称为泛型的擦除。为什么擦除呢?因为为了兼容运行时的类加载器。 擦除补偿;取出来的时候自动类型转换。     jdk1.5出现的安全机制。

2016-06-07 16:06:34 245

原创 线程的同步

线程的同步:1.同步代码块:synchronized(obj){};2.同步函数:public synchronized void add(int num);同步函数用的锁对象是当前类本身,也就是this。两种方法的区别:同步函数的锁是固定的this,同步代码块的锁可以是任意的对象,使用的时候建议使用同步代码块。静态同步函数:public static synchr

2016-06-07 16:05:22 160

原创 RemoteViews

RemoteViews在实际开发中,主要用于在通知栏和桌面小部件的开发过程中。通知栏主要是通过NotificationManager的notify方法来实现,它除了默认效果外,还可以另外定义布局。桌面小部件则是通过AppWidgetProvider来实现的,AppWidgetProvider本质上是一个广播。通知栏和桌面小部件的开发过程中都会用到RemoteViews,它们

2016-06-07 16:03:30 266

原创 String,StringBuffer,StringBuilder

String:当改变一个String对象a的值时,会重新new一个String对象,然后把a的引用指向新的String对象。StringBuffer:当改变StringBuffer对象a的值时,不会重新new,而是直接改变a引用里面的值。是线程同步的。StringBuilder:类似StringBuffer,但是不是线程同步的。注意:是不是String也不安全呢?事实上不存在这个问

2016-06-07 15:41:45 175

原创 关于scrollTo方法

View调用scrollTo方法,实际上调用的是OnScrollChangeListener.onScrollChange(View v, int scrollX, int scrollY, int oldScrollX, int oldScrollY),来改变View内容的水平跟垂直位置,这个接口可以通过public void setOnScrollChangeListener(OnScro

2016-06-07 15:39:58 192

原创 关于mFirstTouchTarget

对于一个事件序列,如果ViewGroup不拦截ACTION_DOWN,而子View处理了这个ACTION_DOWN事件,但是后面ViewGroup拦截了某个ACTION_MOVE,那么mFirstTouchTarget会被置为Null,也就是说后面不会询问ViewGroup是否会拦截后面的事件序列,而是直接交给它处理。

2016-06-07 15:39:01 230 1

原创 ListView内部调用了requestDisallowInterceptTouchEvent(true)

经过试验,得知,如果ListView外部套用了ViewGroup,而ViewGroup不拦截任何事件,那么对于同一个事件序列,每一次事件到来理论上来说应该都会调用ViewGroup的onInterceptTouchEvent方法,但是事实并不是这样,一般只在ACTION_DOWN跟几个ACTION_MOVE到来的时候调用,而后序的ACTION_MOVE跟ACTION_UP不会调用onInterce

2016-06-07 15:38:20 139

原创 关于线程的下载及接口回调的问题

接口回调不需要Looper,但是 如果需要在子线程中去使用Handler是需要Looper的,使用方法为 Looper.prepare Looper.loop 然后使用完了一定要Looper.myLooper.quit;下载的时候更新主界面的View,如果是在子线程或者子线程的回调接口中去更新主界面的View 会抛出can't touch不是它创建的view异常。但是更新ProgressB

2016-06-07 15:34:46 234

原创 Service的启动(startService)

1.在ContextImpl中startService方法会调用startServiceCommon方法,而startServiceCommon方法又会通过ActivityManagerNative.getDefault这个对象来启动一个服务,ActivityManagerNative.getDefault就是AMS。AMS会通过ActivityServices来完成Service的后续启动,Ac

2016-06-07 15:33:06 419

原创 关于Activity的启动过程

1.startActivity有好几种重载,但它们最终都会调用startActivityForResult方法。2.启动Activity真正的实现由ActivityManagerNative.getDefault的startActivity方法来完成。由于ActivityManagerNative.getDefault是一个IActivityManager类型的Binder对象,而

2016-06-07 15:32:11 232

原创 Activity的Window创建

Activity的启动最终会由ActivityThread中的perforLaunchActivity()来完成整个启动过程,在这个方法内部会通过类加载器创建Activity的实例对象,并调用其attach方法为其关联运行过程中所依赖的一系列上下文环境变量。在attach方法里,系统会创建Activity所属的Window对象(new了一个PhoneWindow)并为其设置回调接口。由于Act

2016-06-07 15:31:03 204

原创 理解Window和WindowManager

1.Window是一个抽象类,它的具体实现是PhoneWindow。Window是一个抽象概念,每一个Window都对应着一个View和一个ViewRootImpl,Window和View通过ViewRootImpl建立关联。因此Window并不是实际存在的,它是以View的形式存在。2.WindowManager是一个接口,是外界访问Window的入口。它的真正实现是Window

2016-06-07 15:30:32 279

原创 Android中线程池的分类

Android中最常见的四类具有不同功能特性的线程池,它们都直接或间接的通过配置ThreadPoolExecutor来实现自己的功能特性,这四类线程池分别是:FixedThreadPool,CachedThreadPool,ScheduledThreadPool以及SingleThreadPool。1.FixedThreadPool:通过Executors的newFixedThre

2016-06-07 15:28:20 649

原创 Android中的线程形态

除了传统的Thread外,还包含AsyncTask,HandlerThread,以及IntentService。1.AsyncTask:封装了线程池和Handler,它主要是为了方便开发者在子线程中更新UI。AsyncTask的类必须在主线程中加载,这就意味着第一次访问AsyncTask必须发生在主线程,当然这个果然在Android4.1及以上版本中已经被系统自动完成。在Android

2016-06-07 15:27:40 243

原创 关于ProgressBar能在子线程中更新

理论上在子线程中是不能更新UI的,但是ProgressBar却可以。这是因为在 setProgress 的源码中,首先会判断当前线程是否为主UI线程,若是主UI线程则直接调用 doRefreshProgress 方法更新进度;若不是主UI线程则会先创建一个RefreshProgressRunnable 对象,然后调用 view 的 post(Runnable action) 方法,将

2016-06-07 15:24:49 371

原创 关于Handler的post跟View的post方法。

Handler发送消息的过程仅仅是向消息队列中插入了一条消息,MessagQueue的next方法一会返回这条消息给Looper,Looper收到消息后就开始处理了。最终消息由Looper交由Handler处理,即Handler的dispatchMessage方法会被调用。dispatchMessage方法的源码如下:public void dispatchMessage(Message

2016-06-07 15:23:17 1542

原创 HttpUrlConnection的连接异常

Debug的时候 在conn.setRequestMethod()的时候 会抛出 Connection already established 异常。但是正常运行的时候 不会抛出这个异常,这个问题也很奇怪,目前没有解决。

2016-06-07 15:21:17 228

原创 关于线程的下载及接口回调的问题

接口回调不需要Looper,但是 如果需要在子线程中去使用Handler是需要Looper的,使用方法为 Looper.prepare Looper.loop 然后使用完了一定要Looper.myLooper.quit;下载的时候更新主界面的View,如果是在子线程或者子线程的回调接口中去更新主界面的View 会抛出can't touch不是它创建的view异常。但是更新ProgressB

2016-06-07 15:20:26 183

原创 线程的锁及线程间的通信

当前线程只有拥有锁对象 ,才能去wait()或者notify()该锁对象上面的线程。如何拿到锁对象:线程中有同步代码,并且以该对象作为同步锁。具体可参考API文档。

2016-06-07 15:16:06 154

原创 抛ConcurrentModificationException原因以及解决方案

final void checkForComodification() {    if (modCount != expectedModCount)    throw new ConcurrentModificationException();}即当modCount != expectedModCount时,执行next()就会抛出ConcurrentModificatio

2016-06-07 15:13:06 162

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除