android
文章平均质量分 83
潇潇微雨up
这个作者很懒,什么都没留下…
展开
-
View的滑动冲突问题
View的滑动冲突问题1. 滑动冲突出现的三种情况 外部滑动方向和内部滑动方向不一致 外部滑动方向和内部滑动方向一致 上述两种情况的嵌套但是这在使用ViewPager和listView的时候并不会出现滑动冲突的问题 那是因为ViewPager和listview已经替我们解决了滑动冲突的问题 但是如果是我们自己自定义的控件出现了问题 就没那么幸运了 因此我们还是要掌握滑动冲突的解决办法 2原创 2016-05-16 07:05:20 · 552 阅读 · 0 评论 -
Android中的Drawable使用
Drawable是一种图像的概念 但她又不全是图片 可以通过颜色来构造出一些图案,通常是用XML文件定义的 种类很多 可以通过getIntrinsicHeight和getIntrinsicWidth获取 通常来说Drawable是没有大小概念的 BitmapDrawable是有大小的 大小就是图片的宽高 下面我就来总结下 Drawable的各种类型的使用。Drawable的分类Bi原创 2016-05-19 17:04:55 · 736 阅读 · 0 评论 -
RemoteViews之RemoteViews的内部机制
RemoteViews的作用是在其他的进程显示并更新View界面的 RemoteViews的内部机制RemoteViews支持的layout和View:layout: FrameLayout LinearLayout RelativeLayout GridLayoutView:AnalogClock button Chronometer ImageButton ImageView P原创 2016-05-19 17:06:21 · 7711 阅读 · 0 评论 -
AlertDialog 自定义布局 以及 EditText 无法弹出软键盘的解决
今天在做项目的过程中,需要弹出一个提示框 输入账号 密码, 以前做过 类似功能,没在意,就随便用 AlertDialog写了写,然后就出现了问题(很好奇以前为什么没发现??),问题在于自定义的AlertDialog布局中有EditText控件,点无法弹出软键盘,导致根本无法输入。。接下来就先介绍下如何自定义AlertDialog布局吧第一步:写一个mydialog.xml布局 文件原创 2016-04-14 21:16:56 · 766 阅读 · 0 评论 -
Win8.1安装SVN时 出现The code error = 2502\2503的解决方法
1.运行CMD(管理员) 2.输入以下命令: msiexec /package "你安装程序包的路径"其中安装路径中必须含有扩展名 否则会出现 无法安装.....原创 2015-06-22 15:44:16 · 2270 阅读 · 1 评论 -
三星手机 调用系统相机 data 为null 崩溃的问题 (未解决)
据网上搜索, 调用三星 相机时 会切换屏幕的状态(横着还是竖着) 这时候会 销毁 当前activity 这就使得调用的时候回到上一级activity 或者 直接崩溃 网上有以下几种解决方法 本人使用 全都不行:1. 限制屏幕状态 android:configChanges="orientation|keyboardHidden|screenSize"原创 2015-06-02 18:38:49 · 809 阅读 · 0 评论 -
关于Listview 使用过程中 的一些问题及 解决方法
1.布局刷新错乱 这种问题 通常是用了viewholder 优化才产生的 问题的主要原因是 每次滑动listview 它为了性能优化 会重用以前已经加载好的布局 这时候如果处理不当就会产生布局错乱 而如何解决这一问题呢 首先 我们应该知道 position 是确定布局的一个重要变量 如果给 某个item 的 布局都通过position来进行 控制 那么这一问题就会解决原创 2015-06-03 20:38:58 · 509 阅读 · 0 评论 -
Window和WindowManager的分析
Window表示一个窗口的概念 在日常的开发中我们接触的并不多 但是在我们需要在桌面上显示一个类似于悬浮的东西时 就需要使用Window来实现了 Window类只是一个抽象类 它的具体实现是PhoneWindow 创建一个Window是一件很简单的是 只需要由WindowManager即可完成 WindowManager通过IPC调用WindowManagerService Andr原创 2016-05-20 23:27:40 · 441 阅读 · 0 评论 -
Android的消息机制简要分析
Android的消息机制由Handler、Looper、MeassageQueue 三部分组成 Looper中有MessageQueue Handler中有Looper、MessageQueue Message存在MessageQueue中 下面就简单的介绍一下相关的知识:1.ThreadLocal的作用及原理 ThreadLocal是Thread的一个内部的数据存储类,它是线程相关原创 2016-05-22 11:31:47 · 285 阅读 · 0 评论 -
Android性能优化
Android需要优化的主要有内存和CPU的使用 过多的使用内存会产生OOM CPU占用过多会出现程序卡顿 更严重会出现ANR 因此Android也产生了一些性能优化的方法 性能优化主要包括这几个方面 : 布局优化、绘制优化、内存泄漏优化、响应速度优化、ListView优化、Bitmap优化、线程优化 下面就来介绍一下这几种优化方法的具体实现吧布局优化布局优化的思想很简单,就是尽可能减原创 2016-05-23 07:57:01 · 270 阅读 · 0 评论 -
RemoteViews之pendingIntent的理解
在使用RemoteViews的时候 我们发现了一个特别的Intent 即 PendingIntent 根据字面的意思 pending —> 待定 等待 即将发生的意思 也就是 待定发生的Intent ,和普通的Intent相比 PendingIntent不是立即发生的 它是发生在未来的某个特定的时刻 比如说AppWidget点击的时候 Notification点击的时候 所以它的原创 2016-05-17 23:09:03 · 1568 阅读 · 0 评论 -
RemoteViews之Notification和Appwidget
对于RemoteViews 一听名字 Remote是远程的意思 也就是远程Views的意思 换句话说就是它可以加载远程服务的界面 也就是跨进程更新界面 这听起来很神奇 原理简单的说 就是 RemoteViews是一个Parcelable对象 这个对象是可以跨进程传递的 于是RemoteViews会通过Binder传递到Server进程中 然后通过RemoteViews的一些原创 2016-05-17 23:08:31 · 342 阅读 · 0 评论 -
View的工作原理之MeasureSpec测量规格
View的工作原理之MeasureSpec测量规格1.ViewRoot和DecorViewViewRoot对应于ViewRootImpl类 它是连接WindowManager和DecorView的桥梁 在Activity对象被创建的时候 会将DecorView添加到Window中 同时会创建ViewRootImpl 之后会将ViewRootImpl和DecorView相关联 root =原创 2016-05-16 07:30:13 · 560 阅读 · 0 评论 -
View的几个基本位置属性和滑动效果的几种实现方法
虽然用了很长时间的View 也自定义过很多 但对View中的一些具体参数的含义至今不是很清楚 平时使用都是试着来的 最近看了书中讲的View的内容更加让我糊涂了 有种以前的功能是怎么实现的都不晓得了的感觉 既然这样我就重新认真总结性的看下吧 View的位置参数首先View的四个顶点 left right top bottom 分别代表View 相对于它的父布局左边框的距离原创 2016-05-16 07:43:14 · 503 阅读 · 0 评论 -
View弹性滑动的几种实现方法
Scroller类实现简单 使用的ScrollTo方法 使用动画比如让其在1000内滑动过去 或者利用动画的回调接口 根据动画执行的百分比 来进行滑动效果的滑动进度控制 很聪明的做法 使用延时策略使用Handler的postDelay方法发送消息 即可原创 2016-05-16 07:44:56 · 412 阅读 · 0 评论 -
View事件的分发机制
事件分发的3个重要函数 :dispatchTouchEvent onInterceptTouchEvent onTouchEvent 这个三个函数的关系 可以用下述伪代码 描述 public boolean dispatchTouchEvent(MotionEvent ev) { boolean consume = false; //表示是否处理事件原创 2016-05-16 07:49:18 · 305 阅读 · 0 评论 -
View的工作流程
在前面的博客中 我已经写到了 View的工作流程主要指 measure —>layout —>draw 这三个流程 其中 measure是测量View的宽和高 layout是根据测量的宽和高来确定最终的宽和高和控件四个顶点的位置的 而draw则是将View绘制到屏幕上 通过这三步 就完成了一个View的显示过程 下面我就来分别总结下这三个过程: - Measure 对于原始地V原创 2016-05-16 23:04:54 · 291 阅读 · 0 评论 -
View的绘制过程
在前面的博客中 我已经写到了 View的工作流程主要指 measure —>layout —>draw 这三个流程 其中 measure是测量View的宽和高 layout是根据测量的宽和高来确定最终的宽和高和控件四个顶点的位置的 而draw则是将View绘制到屏幕上 通过这三步 就完成了一个View的显示过程 下面我就来分别总结下这三个过程: - Measure 对于原始地V原创 2016-05-17 08:41:17 · 248 阅读 · 0 评论 -
Android-UIL图片缓存框架 源码解析
Android-Universal-Image-Loader 是 github上一个开源的图片缓存框架 ,提供图片MemoryCache和DiskCache的功能,并支持加载网络、本地、contentProvider图片的功能Acceptable URIs examples"http://site.com/image.png" // from Web"file:///mnt/原创 2016-04-21 20:27:13 · 2506 阅读 · 0 评论 -
android-UIL图片缓存框架 主要类包括的成员
UIL 框架 包括 ImageLoader、ImageLoaderConfiguration、ImageLoaderEngine 、ImageDownloader、ImageDecoder首先是ImageLoader类 private ImageLoaderConfiguration configuration; //配置信息类 private ImageLoaderEng原创 2016-04-21 20:28:00 · 443 阅读 · 0 评论 -
自定义View需要注意的问题
自定义View的分类继承View重写onDraw方式 这种方式主要用来实现一些不规则的自定义View 需要自己处理wrap_content的情况 因为默认的View对wrap_content没做特殊处理,只把这种情况当做match_parent处理 而且padding也需要自己处理 margin不用 因为margin是父容器确定的 继承ViewGroup派生特殊的原创 2016-05-17 23:02:01 · 2545 阅读 · 0 评论 -
Android线程池及Bitmap加载和Cache
{\rtf1}由于这部分知识我已有所了解,所以这里便不详细介绍了 大体记录一下平时容易忘记的细节东西,方便以后忘记了回头看用线程池线程池的优点大概可以分为以下三点:1.重用线程池中的线程,避免由于创建和销毁线程带来的巨大开销2.能有效控制线程池的最大并发数,避免大量线程间因互相抢占资源而导致的阻塞现象3.能够对线程进行简单的管理,并提供定时执行及指定间隔循环执行等功能线程池的的几个常用属性:原创 2016-05-23 07:58:34 · 360 阅读 · 0 评论 -
Android 优化列表卡顿现象的一种办法
开发过程中 可能会遇到主界面卡顿 不流畅的现象 出现这个问题的原因 通常都是在主线程执行了太耗时的操作了 才会导致画面卡顿 首先不要在getView中执行耗时任务 如果要进行 请异步进行 然后要控制异步任务的频率 想象一种情况 在getView方法 会用异步的方法加载图片 如果用户刻意快速频繁上下滑动 那么会瞬间产生大量异步任务 导致线程池阻塞 并带来大量的UI更新操作原创 2016-05-23 07:59:11 · 2873 阅读 · 0 评论 -
Android的一些综合技术
使用CrashHandler来获取应用的crash信息在开发过程中 我们开发的软件往往无法完全避免crash情况的发生 当crash发生的时候 程序会闪退或者提示用户已停止 这种用户体验是极差的 而我们要尽可能的避免这种现象的发生 这就需要我们开发者尽可能的收集crash信息 进行漏洞的修复 这时候就可以用CrashHandler来获取应用的crash信息 下面就来介绍下 Cras原创 2016-05-23 07:59:43 · 314 阅读 · 0 评论 -
Android ViewPager + Fragment 懒加载数据 可操作控件版
ScrollView + ViewPager + Fragment 懒加载数据 和 动态Fragment高度问题原创 2016-11-07 17:28:54 · 478 阅读 · 0 评论 -
Android 默认水波纹的使用和去除
actionBarItemBackground 5.0以上超出边界圆形水波纹 selectableItemBackground 5.0以上边界内圆形水波纹 style=”?android:attr/borderlessButtonStyle” 无效果 这两个属性在5.0以下是默认的灰色效果,个人觉得也很唯美大笑用法 Android:background=”?android:attr/转载 2016-11-08 16:03:04 · 9968 阅读 · 0 评论 -
Android Studio lint工具所提示的需要注意的内容简要记录
Android lint部分:Duplicated icons under different names 相同的icon 用了不同的名字 FrameLayout can be replaced with tag FrameLayout 可以被替换成 merge标签 Handler reference leaks handler的内存溢出问题 替换成静态 + 弱引用 Hardcode原创 2016-12-22 18:55:24 · 2934 阅读 · 0 评论 -
Android 反编译XML 代码乱码问题 解决
今天在写一个布局的时候 出了点小问题 原本已经完成的布局让我一不小心改掉了,由于修改回去比较麻烦,一想我自己手机上安装的是没修改以前的,因此也就想着反编译一下取回当时的代码了。首先我把apk直接解压了,在res文件夹下 打开布局文件,可是却是乱码,不可读。 以前的时候是eclipse写的apk 反编译用的是Androidfby 直接反编译apk可以得到正确的xml布局,可对于as apk就原创 2016-11-02 16:23:51 · 7601 阅读 · 3 评论 -
关于最下方 EditText 获取焦点 界面上移的问题
1.当正常的activity 没有设置adjustpan 时 界面中 没有 ListView时 界面不会上移2.当activity 设置了 adjustpan 会自动上移 3.当activity没设置 adjustpan 界面中有 ListView 并且Listview设置了 scrollbar=none时 会上移很奇怪 把scrollbar原创 2017-04-12 21:45:07 · 2660 阅读 · 0 评论 -
RecyclerView notifyItemRemoved 的坑
RecyclerView 的 notifyItemRemoved 方法 可以 实现 带动画的 删除 先设置 recyclerView.setItemAnimator(new DefaultItemAnimator()); 这样可以带有 添加和删除的动画 然后 更新的时候 不要使用 notifyDataSetChanged 方法 使用 notifyItemRemo原创 2017-04-27 19:47:54 · 1964 阅读 · 0 评论 -
监测软键盘的弹出和收起
boolean isVisiableForLast = false; int keyboardHeight = 0; public void addOnSoftKeyBoardVisibleListener(Activity activity) { final View decorView = activity.getWindow().getDecorView()...转载 2018-04-17 09:15:53 · 362 阅读 · 0 评论 -
Android 软键盘上面 输入框弹起 计算软键盘高度法实现
大概方法: OnGlobalLayoutListener方法监听window的变化 如果可见屏幕的高度小于屏幕高度的80% 则说明弹出了这种方式通常是在 默认的弹出冲突了 或者已经使用了默认的弹出方式的情况下使用。。 public void addOnSoftKeyBoardVisibleListener(Activity activity) { final View dec...原创 2018-05-01 08:45:31 · 1525 阅读 · 0 评论 -
android studio 2.3 cmake ndk开发第一个项目运行
勾选support c++的ndk配置创建项目 添加defaultConfig { ndk{ moduleName "HelloJni" //so文件: lib+moduleName+.so abiFilters "armeabi", "armeabi-v7a", "x86" //cpu的类型 ...原创 2018-07-26 08:49:08 · 289 阅读 · 0 评论 -
Android DrawText 基线的确定问题
drawText baseLine的确定原创 2016-11-03 11:07:03 · 2583 阅读 · 0 评论 -
关于Handler的突然理解
以往一直认为Handler是实现Android间的线程间通信的 也就是在Android线程间传递消息 其实理解的一直有错误 今天突然一想 线程是共享进程的内存的 也就是说 可以直接写变量 读变量来 进行线程间的通信 那样就不需要Handler了 但是为什么还需要Handler呢 因为线程间通信 比如说 有A B两个线程 A要和B通信 A要告诉B A饿了 那么如果通过写变量 读变原创 2016-06-06 07:44:47 · 316 阅读 · 0 评论 -
Android Studio 更新后一直停在Refreshing gradle project问题解决
解决办法: 1. 查看自己android studio 安装路径下的 gradle 下的 gradle版本 比如 我的路径F:\android_studio\gradle\gradle-2.10 版本号就是 2.10 2. 查看正在refreshing的项目的目录下的 \gradle\wrapper\gradle-wrapper.properties文件 比如我的 路原创 2016-07-25 17:47:21 · 40283 阅读 · 3 评论 -
Android 热补丁技术的探索与简单实战----Qzone方案
Android app客户端与Web app相比的有一个劣势在于web app有更新不需要重新安装程序,而Android app如果有更新则需要重新下载最新版本安装完成更新,这个缺点无疑会给用户带来不小的麻烦与流量的浪费。 那么有没有办法解决这个问题呢? 热补丁技术的出现就是为了解决这个问题,现今我所知道的热补丁技术有淘宝的Dexposed、支付宝的AndFix以及Qzone的超级热补丁方案。下原创 2016-07-28 13:36:41 · 1915 阅读 · 0 评论 -
Android Studio +MAT 分析内存泄漏实战
对于内存泄漏,在Android中如果不注意的话,还是很容易出现的,尤其是在Activity中,比较容易出现,下面我就说下自己是如何查找内存泄露的。首先什么是内存泄漏?内存泄漏就是一些已经不使用的对象还存在于内存之中且垃圾回收机制无法回收它们,导致它们常驻内存,会使内存消耗越来越大,最终导致程序性能变差。 其中在Android虚拟机中采用的是根节点搜索算法枚举根节点判断是否是垃圾,虚拟机会从GC R原创 2016-07-29 20:45:10 · 20815 阅读 · 3 评论 -
Android Allocation Tracker和TraceView的使用
在介绍这两个工具之前,我们要先知道这两个工具的作用 Allocation Tracker : 分析内存占用情况 在Monitors 的 memory中 可以看出各个成员在内存中所占的大小 追踪对象在内存创建的过程TraceView : 分析方法执行的性能 在 ADM 中 可以知道方法执行的时间 次数等 这两个工具的使用很简单 :Allocation Track原创 2016-07-31 15:40:37 · 772 阅读 · 0 评论 -
Android ViewPager 无限循环左右滑动(可自动) 实现
对于ViewPager 广告页 这个功能 很多APP都有这个功能 在网上也看过一些资料,我就在这把我自己完整的实现方法写出来吧 Demo放在最下面 基础的ViewPager:<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android原创 2016-08-17 14:43:51 · 15082 阅读 · 1 评论