
Android
文章平均质量分 66
ChuckChenLw
Read the fucking source code
展开
-
webView与js交互
上一篇中将到了webView的基本使用,其实在Android中webView的使用非常的多,通过webView我们可以很方便的进行与js的交互。这样有利于进行混合编程。那么我们是怎么通过webView与js交互的呢。 第一:程序Java调用js代码 在程序中调用js代码,只需要将webview控件的支持js的属性设置为true,然后通过loadUr原创 2015-01-07 19:16:33 · 711 阅读 · 0 评论 -
Android绘图之绘制太极图
Android是通过graphics类来显示2D图形的。其中graphics中包括了Canvas、Paint、Color、Bitmap等类。graphics具有绘制点、线、颜色、2D几何图形、图像处理等功能。其中Color和Bitmap是很常用的类,我要讲的是Canvas和Paint。顾名思义就是画布和画笔。接下来我将通过绘制太极图来学习Android绘图机制。 Paint类 和日常绘图原创 2015-12-16 19:32:22 · 1103 阅读 · 0 评论 -
Android内存优化杂谈
原文出处:WeMobileDev(微信公众号) Android内存优化是我们性能优化工作中比较重要的一环,这里其实主要包括两方面的工作: 1.优化RAM,即降低运行时内存。这里的目的是防止程序发生OOM异常,以及降低程序由于内存过大被LMK机制杀死的概率。另一方面,不合理的内存使用会使GC大大增多,从而导致程序变卡。 2.优化ROM,即降低程序占ROM的体积。这里主要是为了降低程序转载 2015-12-17 14:20:27 · 1232 阅读 · 0 评论 -
TextView 去掉自适应默认的fontpadding
最近在项目中使用textview时发现在使用android:layout_height="wrap_content"这个属性设置后,textview会有默认的padding,也就是fontpadding。这样就会造成textview和其他view中间的间距会比自己的设置的大。那么我们怎么来remove掉这个间距呢? 第一、先试试设置includefontpadding=false ,如果不能达原创 2015-07-18 14:45:46 · 14112 阅读 · 5 评论 -
解决ScrollView嵌套ListView显示不全问题
在看本文之前请写了解一下UNSPECIFIED、EXACTLY、AT_MOST三种模式。 在项目中经常会用到ScrollView嵌套ListView的情况。如果使用原生的ListView会出现只显示一行的情况: 出现这个的原因是在scrollView中ListView在OnMeasure阶段无法测出实际的高度,我们需要给他设置AT_MOST模式以支持很大的高度。这时候可以自定义一个M原创 2015-11-26 23:06:48 · 7747 阅读 · 1 评论 -
仿Android6.0联系人列表
最近因为项目需要,研究了Android联系人相关内容,包括联系人数据库,获取联系人数据,使用ListView展示联系人。我将按照以下几点记录: Android存储联系人数据库表结构 获取联系人数据 联系人列表效果 一Android存储联系人数据库表结构 要想搞清楚Android联系人内容,首先就得清楚这些内容在Android中是怎么存储的,为了搞清楚这个问题,可以直原创 2015-12-03 22:34:03 · 6242 阅读 · 1 评论 -
从AIDL看Android跨进程通信
AIDL是Android实现IPC的一种重要的方式,理解它的原理对理解Android进程间通信有很大的帮助。AIDL的定义,已经有很多介绍的文章了,这里就不做详解了。我们直接从实例入手来分析AIDL实现原理。 AIDL的使用 首先需要定义AIDL接口IMyService.aidl: // IMyService.aidlpackage com.chuck.aidldemo;// D原创 2016-07-23 17:31:26 · 1627 阅读 · 0 评论 -
RecyclerView 报Scrapped or attached views may not be recycled. as Scrap:false isAttached:true异常
最近在做项目中使用RecyclerView时会偶现以下异常:java.lang.IllegalArgumentException: Scrapped or attached views may not be recycled. isScrap:false isAttached:true at android.support.v7.widget.RecyclerView$Rec原创 2016-06-18 09:53:42 · 12852 阅读 · 5 评论 -
RxJava操作符之Creating Observables
RxJava 是一个在Java虚拟机上实现的响应式扩展库:提供了基于observable序列实现的异步调用及基于事件编程。 它扩展了观察者模式,支持数据、事件序列并允许你合并序列,无需关心底层的线程处理、同步、线程安全、并发数据结构和非阻塞I/O处理。 官网定义:RxJava is a Java VM implementation of Reactive Extensions: a libra原创 2016-06-23 13:37:04 · 797 阅读 · 0 评论 -
Android省市区三级联动控件
最近有需求需要实现省市区三级联动,但是发现之前的实现不够灵活,自己做了一些优化。为了方便以后使用,抽离出来放在了github上WheelView。同时把其核心库放在了JCenter中了,可以直接引用。也可以参考项目中的Demo进行引用 下面介绍一下如何使用 如果用的是AndroidStudio那么直接在build.gradle文件中添加依赖: dependencies {原创 2017-01-05 07:50:21 · 2449 阅读 · 0 评论 -
Android Frameworks系列(一) startService启动
之前写过一篇从AIDL看Android跨进程通信 从Java层次去分析AIDL运行的原理,当时主要是为了学习Binder机制而写的,但是Binder机制比较复杂,打算过段时间单独的写一篇来分析。本篇文章分析startService的启动过程,也会涉及到使用Binder机制来进行跨进程通信,但是不会分析Binder机制的细节。不过还是强烈建议大家学习Binder机制,至少要了解Binder的基本架构原创 2016-12-13 19:44:14 · 3267 阅读 · 1 评论 -
Android 抢红包
最近有要实现微信抢红包的需求,用的AccessibilityService实现,其实网上已经很多这方面的教程,本文纯粹是为了自己记录一下,也是纯粹的学习目的! 实现自动抢红包的原理,是借助Android的辅助服务AccessibilityService,这个服务是Android为部分使用者更方便的与手机交互。该服务的功能很强大,我们就通过抢红包来学习它吧。 第一步在AndroidMani原创 2017-01-17 16:39:12 · 1577 阅读 · 0 评论 -
Android开发中单例模式写法与可能遇到的坑
年底了,手上的活不是很多,就想着将平时记录的笔记总结一下。准备总结一下平时常常使用的设计模式。本篇就是比较常用的单例(Singleton)模式。 不管是Android开发还是Java开发,相信单例模式都是用的比较多的,平时再用的时候有没有想过,到底有多少种写法,或者有么有什么坑没有踩呢?带着这些问题我们先来了解一下什么情况下会用到单例模式。 一般在希望系统中特定类只存在一个实例时,就可以原创 2017-01-19 09:13:16 · 8834 阅读 · 17 评论 -
Android开发中的代理模式
上一篇文章Android开发中单例模式写法与可能遇到的坑讲到了单例模式的一般写法,本篇继续总结一下Android(Java)中比较常用的代理模式。和单例模式一样,代理模式也是经常使用到的,使用过Spring的小伙伴,应该比较清楚,其AOP代理就默认使用JDK自带动态代理来生成代理类的。在Android中很多基于Binder机制的系统服务如ActivityManagerService、自己定义的AID原创 2017-01-22 15:10:06 · 3216 阅读 · 2 评论 -
自己动手生成Android Apk
本文仅做学习使用,比较简单,没有实际项目复杂。 掌握Apk生成的过程,对于我们是非常重要的。而该过程平时都是由IDE自动帮我们完成的。IDE可以给我们带来很大的便利,但是也是一把双刃剑,有时候会让我们忽视一些重要的实现步骤。所以我们在使用IDE自动编译打包Apk时,也应该知道Apk是怎么一步步由我们项目中的java文件,资源文件等变成我们所熟知的Apk的。不管使用什么IDE,Android原创 2017-03-07 10:26:13 · 29174 阅读 · 10 评论 -
浅谈自定义View
Android提供了比较丰富的组件库来创建UI,但是并不能完全满足我们的需求,考虑到这一点Google给我们提供非常方便的拓展方法,我们可以在原有控件的基础上来自定义满足我们需求的View。掌握自定义View,是Android开发的一项重要内容。那么如何实现自定义view呢,方法有很多。我要说的是比较简单的创建复合控件。 一般有以下几步: 1.继承一个合适的ViewGroup 2.原创 2015-11-19 20:49:43 · 869 阅读 · 2 评论 -
实现不同字体颜色的TextView
遇到的需求,mark一下:package com.chuck.recyclerviewdemo;import android.content.Context;import android.graphics.Canvas;import android.text.SpannableStringBuilder;import android.text.Spanned;import android.t原创 2015-12-10 20:21:07 · 598 阅读 · 0 评论 -
Android正则表达式
要严格的验证手机号码,必须先要清楚现在已经开放了哪些数字开头的号码段,目前国内号码段分配如下:移动:134、135、136、137、138、139、150、151、157(TD)、158、159、187、188联通:130、131、132、152、155、156、185、186电信:133、153、180、189、(1349卫通)验证手机号: public class C转载 2015-01-12 13:22:01 · 520 阅读 · 0 评论 -
WebView使用初级
WebView可以加载显示网页,可以将其视为一个浏览器。它使用了WebKit内核加载显示网页。下面来讲讲webView的使用:1.在webView中加载网页只需要webView.loadUrl(url);例如webView.loadUrl("http://www.baidu.com");注意:一定要记得添加联网权限: 否则会出现Web page not available原创 2014-12-29 11:03:09 · 455 阅读 · 0 评论 -
Android UTF-8转码
在项目中可能会遇到url中有中文的情况,这个时候我们可能需要对url进行编码mport java.io.UnsupportedEncodingException; import java.net.URLDecoder; import java.net.URLEncoder; public class UTFTest { public static void原创 2015-09-10 22:01:33 · 10560 阅读 · 0 评论 -
Android获取状态栏高度
实际项目中有时会碰到技术状态栏高度的情况。有两种方法可以做到: 第一种: 通过获取到 status_bar_height的资源id,在计算其高度。public int getStatusBarHeight(){ int height=0; int resouceId=getResources().getIdentifier("status_ba原创 2015-09-07 20:34:38 · 800 阅读 · 0 评论 -
Android 获取手机中所有图片
我们在做类似相册的功能时,需要获取手机中图片,这又是一个非常耗时的操作,不能在主线程中执行,所以需要另开一线程进行,直接上代码: new Thread(new Runnable() { @Override public void run() { Uri uri = MediaStore.Images.Media原创 2015-10-21 20:53:41 · 2143 阅读 · 0 评论 -
Android ListView工作原理完全解析,带你从源码的角度彻底理解
原文链接:http://blog.youkuaiyun.com/guolin_blog/article/details/44996879在Android所有常用的原生控件当中,用法最复杂的应该就是ListView了,它专门用于处理那种内容元素很多,手机屏幕无法展示出所有内容的情况。ListView可以使用列表的形式来展示内容,超出屏幕部分的内容只需要通过手指滑动就可以移动到屏幕内了。另外ListView还有一个转载 2015-10-21 21:51:33 · 781 阅读 · 0 评论 -
在Android6.0中使用AlertDialog.Builder出现的问题
最近在项目中使用AlertDialog.Builder创建dialog在Android5.0以前可以正常显示效果,但是在Android6.0显示的很丑,整个style都变了,如下图:代码如下:import android.app.AlertDialog;private void showPicturePicker() { AlertDialog.Builder builder =原创 2015-10-22 22:14:30 · 6006 阅读 · 4 评论 -
View 中的dispatchTouchEvent,OnInterceptTouchEvent ,OnTouchEvent方法
在view 的点击事件分发的过程中有三个非常重要的方法: dispatchTouchEvent() onInterceptTouchEvent() onTouchEvent() 先来认识一下这三个方法: dispatchTouchEvent() 该方法是用来处理事件的分发。如果事件能够传递到当前View,那么一定会调用此方法。View中该方法的源码:/** * Pass t原创 2015-11-11 22:30:36 · 831 阅读 · 0 评论 -
Unbuntu下Android studio报Unable to recreate missing debug keystore错误
最近在用ubuntu下使用android studio调试程序时,报出以下错误: Execution failed for task ':app:validateDebugSigning'. > Unable to recreate missing debug keystore. 这个是由于android studio需要自动重新生成keystore时,原创 2015-11-12 22:44:39 · 5353 阅读 · 0 评论 -
动态为TextView设置drawableRight
在写TextView的这个属性的drawableRight时,一般都是在xml里面写好的,但是我们有时候的需求是想在代码中动态的添加的效果,那么接下来说说具体的方法。 <TextView android:id="@+id/Title" android:layout_width="match_parent" android:layout_原创 2015-10-26 23:18:04 · 1002 阅读 · 0 评论 -
Android启动模式之lunchMode
大家看这个帖子之前先了解一下task,taskAffinity属性。 在开发一个项目时,会遇到多个页面跳转的问题,在Android中通常会使用启动模式来处理页面跳转。Activity的启动模式有四种: standard singleTop singleTask singleInstance 接下来将详细介绍这四种模式standard模式 standard模式原创 2015-10-27 21:56:12 · 2254 阅读 · 1 评论 -
Android Design Support Library之TabLayout
Google在今年的IO大会上发布了新的support library,用于设计出MD风格的相关的控件。可以兼容android 2.1以上设备。如果使用的Android studio需要在build.gradle文件中添加compile 'com.android.support:design:22.2.0'今天将要介绍其中的TabLayout原创 2015-08-28 04:25:37 · 5549 阅读 · 0 评论 -
Android 事件分发机制详解
在View 中的dispatchTouchEvent,OnInterceptTouchEvent ,OnTouchEvent方法 这篇文章中介绍了一下dispatchTouchEvent,OnInterceptTouchEvent ,OnTouchEvent三个方法。今天想分析一下触摸事件分发和处理机制。 为了能够清楚的分析,我们先新建一个项目,布局如图: ViewGroup1嵌原创 2015-11-20 19:58:52 · 710 阅读 · 0 评论 -
Android Design Support Library之FAB(Floating Action Button)
FAB是Android Design Support Library库中带有阴影的圆形button,他的使用非常简单。一般使用FAB时需要确定其位置,所以可以在外部套用Framelayout。如:<FrameLayout android:id="@+id/rootLayout" android:layout_width="match_parent" a原创 2015-11-16 19:19:23 · 1800 阅读 · 0 评论 -
Android事件分发与消费
之前写过一篇Android 事件分发机制详解 ,感觉比较乱,这里再总结一下。网上已经有很多前辈分析过源码,大家可以参考,我这里尽量不做过多的源码分析,仅仅从流程上分析。 0x01 基础部分 事件分发和消费我们主要涉及到以下三个方法: dispatchTouchEvent():分发事件 onInterceptTouchEvent():拦截事件 onTouchE原创 2017-03-31 11:21:56 · 2485 阅读 · 1 评论