- 博客(117)
- 资源 (4)
- 收藏
- 关注
原创 刮奖效果的实现
这个效果主要还是涉及到前面提到的,关于交叉模式的知识点。 首先,需要实现这个效果,就必然要绘制3个图层,最底部是刮出来之后的图片,上面的图层是灰色背景,用来覆盖刮奖区域。还有一个图层就是在我们刮得时候,覆盖在灰色图层上的效果。public class CustomView extends View { private Paint mPaint; private Bitmap bgBi
2016-10-15 23:10:43
1472
原创 Android绘制闹钟效果
这段时间,一直在看《Android群英传》里面的内容,刚好昨天学习到2D绘图部分,自己实现了一个闹钟的效果。首先看一下,最终效果:(http://img.blog.csdn.net/20161008221945085)如果直接这样看的话,会觉得很难吧?我刚开始看的时候,也这样觉得。然后看了书中的分析,自己又想了想之后,感觉也没有那么难。一般来说,当我们要绘制一个复杂图形的时候,可以想结合现实,
2016-10-08 22:46:49
1208
原创 RecyclerView实现流式布局并添加headerview、footerview
之所以写这篇文章,是因为今天在面试的时候,被问到了。当然早在1年前,我就在项目中大量使用了RecyclerView。后来换了新的公司之后,就基本没怎么用了。然后问了怎么添加header和footer,勉强答出来了。结果人家加了一句,如果LayoutManager是流式布局,或者GridLayoutManager的话,header会出现留白的问题,怎么处理啦?这个还真没用过,所以就干脆研究了一下。
2016-09-01 21:42:08
1411
原创 面试题(一)
一、深圳远峰科技: 1、求大于n的最大质数 刚开始的时候,想了半天,到底啥叫质数,怎么表示质数。半个多小时之后,才想起来,质数的意思是只能被1和它本身整除的就是质数。 public void num(int n) { if (n == 3) { primeTV.setText("2"); return; }
2016-09-01 20:22:29
484
原创 解决ArrayList的ConcurrentModificationException
这个问题的意思,是你不能在遍历集合的时候,去修改集合。比如: for (String blackListUsername : blackListUsernames) { if (blackListUsername.startsWith("zz")) { blackListUsernames.remove(blackList
2016-07-17 12:54:47
644
原创 关于editText.setOnFocusChangeListener不起作用
今天在做项目的是,需要在edittext实现一个效果:点击的时候变亮,离开的时候变暗。所以需要设置editText.setOnFocusChangeListener 不过后来发现,不管怎么点,始终都没有效果。检查了很多地方,感觉不是自己的问题,就在网上查了一些资料。 有些说是setfocusableintouchmode这个方法的问题,去掉就可以了。然而还是无效
2016-07-13 22:35:31
6931
转载 java中常用的设计模式
1. Singleton(单例模式)作用: 保证在Java应用程序中,一个类Class只有一个实例存在。好处:由于单例模式在内存中只有一个实例,减少了内存开销。 单例模式可以避免对资源的多重占用,例如一个写文件时,由于只有一个实例存在内存中,避免对同一个资源文件的同时写操作。 单例模式可以再系统设置全局的访问点,优化和共享资源访问
2016-06-28 17:12:39
606
原创 腾讯X5内核的集成和使用
这几天,由于项目中有涉及到Egret页面,导致某些机型在4.3及以下版本无法正常加载。所以就考虑到集成腾讯X5内核,替换系统自带的webview。 关于如何集成方面,虽然X5官网 有接入指南,但个人感觉某些方面不是很详细,所以我就总结一下自己的集成步骤: 1、首先在官网下载官方demo ,在手机上运行看看能否满足自己的需求?如果不能满足的话,我还知道有另一个项目
2016-06-28 11:54:55
27261
3
转载 关于Android中内存优化的一些方法
最近在看内存优化方面的一些知识,虽然很多东西目前来说,多不能完全理解,但是在我看来,至少养成好的编码习惯是第一步: 1、尽可能少的创建对象。for(...) { A a = new A(); if (...) { list.add(a);}}改为:for(...) { if (...) { A a = new A(); list.add(a
2016-06-23 17:54:31
539
原创 Android属性动画的基本使用
android系统中目前主要支持3种动画:帧动画、补间动画、属性动画。帧动画就是将多张图片集,按照一定的顺序快速播放,就形成了动画。补间动画主要包含:缩放、渐变、平移、旋转这四种动画。但缺点在于,只是改变了控件本身的形状、位置等外部属性,点击事件等属性,仍然没有改变。所以就有了属性动画,可以说是对补间动画的增强版,不仅修正了补间动画的缺陷,还支持更多的动画。 textView1.setOnCl
2016-06-15 16:07:45
514
转载 Unable to add window -- token null is not for an application错误
Unable to add window -- token null is not for an application 第一个错误使用AlertDialog报错 You need to use a Theme.AppCompat theme (or descendant) with this activity.之解决第二个错误
2016-06-06 22:54:18
702
转载 启动Activity的各种FLAG介绍
Intent intent = new Intent(SecondActivity.this,MainActivity.class); /** * 如果在调用Context.startActivity时传递这个标记, * 将会导致任何用来放置该activity的已经存在的task里面的已经存在的ac
2016-06-01 17:23:22
776
原创 SQLite 的使用(一)
最近项目不是很忙,刚好在看代码的时候,看到了数据库这一块,感觉好长时间没用,也都忘记了,也就顺便复习一下。 由于android中google给我们提供了SQLiteOpenHelper这个类来帮助我们操作数据库,所以我们第一步自然是要继承这个类:public class DBHtlper extends SQLiteOpenHelper { public DBHtlper
2016-05-26 18:19:43
547
原创 APP被kill后重新激活的几种方案
严重声明:除非万不得已,一定不要滥用,一定不要滥用,一定不要滥用!否则非常影响用户体验,我自己也觉得有些流氓,但是由于我们应用的特殊性,一旦被销毁,非常影响用户使用,望各位同行能引以为戒! 第一种:在Application监听此方法,onTrimMemory @Override public void onTrimMemory(int level) {
2016-05-25 16:30:28
3505
转载 键盘不弹出的问题
获取焦点有两种方法:1.Java code?1EditText.requestFoucus()2.Java code?123 自动弹出软键盘有两
2016-05-20 17:45:01
750
原创 Notification的使用
public void Click(View view) { switch (view.getId()) { case R.id.text1: count++; notification = new Notification.Builder(this).
2016-05-18 17:11:07
539
原创 PopupWindow的使用、位置控制
闲来无事,索性就复习了一下PopupWindow的使用。由于一般情况下,大多数PopupWindow都是显示在控件下面,所以只呈现了一种情况,基本够用了。public class MainActivity extends AppCompatActivity { private PopupWindow popupWindow; private int xOff = 0; V
2016-05-18 11:35:24
2792
转载 对于Picasso的封装和优化方案
http://www.jianshu.com/p/093ca3c1447dhttp://www.jianshu.com/p/6b746c904a49http://www.jianshu.com/p/b3142432f4e3
2016-05-13 17:43:47
2003
原创 控制父控件不可拦截子控件事件
requestDisallowInterceptTouchEvent(true)防止viewpager和子view冲突
2016-05-12 17:02:52
3575
转载 unable to load class org.codehaus.groovy.runtime.typehandling.shorttypehandling解决方法
在把eclipse的android项目导出gradle然后导入Android Studio时经常会报 unable to load class org.codehaus.groovy.runtime.typehandling.shorttypehandling,原因是build.gradle中的123dependencies
2016-05-09 18:01:58
727
转载 android判断网络连接状态
/** * 检测网络状态 * http://www.cnblogs.com/qingblog/archive/2012/07/19/2598983.html * @return */ public boolean hasIntener() { ConnectivityManager cm = (ConnectivityManager)
2016-05-09 16:01:24
662
转载 Unable to instantiate application com.android.tools.fd.runtime.BootstrapApplication
打开studio的setting 然后Preferences -> Build, Execution, Deployment -> Instant Run -> Enable Instant Run把勾勾去掉,就可以了
2016-05-09 10:05:53
1365
转载 android中Menu的使用
Android ActionBar应用实战,高仿微信主界面的设计选项菜单OptionsMenu、上下文菜单ContextMenu、子菜单SubMenu
2016-05-07 17:52:06
492
原创 使用Spinner实现省市三级联动
首先看一下xml文件:<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" an
2016-05-07 17:04:00
2159
2
原创 android关于轮询的一种解决方案
前段时间,由于公司项目中某个功能需要用到轮询的操作,所以参考了网上的一些资料,做了一个demo。主要方案是:AlarmManager + BroadcastReceiver + Service 首选需要获取AlarmManager,并包装要执行的服务: /** * 开始轮询 */ public static void startPolling
2016-05-07 11:40:40
5603
2
转载 4.0后configChanges失效的解决
在之前的版本中都是在Manifest文件中设置Activity的 Android:configChanges="orientation|keyboardHidden",但是在android4.0中无效,最后发现是需要加其他一个属性:"screenSize"改成这样就可以了 : android:configChanges="orientation|keyboardHidden|screenS
2016-05-06 18:37:56
649
转载 内存回收小知识
内存不足时,Dalvak 虚拟机会根据其内存回收规则来回收内存: 1. 先回收与其他Activity 或Service/Intent Receiver 无关的进程(即优先回收独 立的Activity)因此建议,我们的一些(耗时)后台操作,最好是作成Service的形式 2.不可见(处于Stopped状态的)Activity 3
2016-05-06 17:51:18
536
转载 activity保存状态和临时数据
android中,当我们对activity进行切换时,运行在后台的activity很有可能被GC杀死。相应的,该activity里面的数据也就丢失了。所以为了保存这些临时数据,我们可以通过重写onSaveInstanceState方法来保存一些临时数据。然后在onCreate方法中,获取临时数据。 具体使用如下:public class MainActivity extends Ap
2016-05-05 18:28:57
1997
1
转载 Android Studio 运行出现 Multiple dex files define Landroid/support/annotation/AnimRes;解决方法
Error:Execution failed for task ':app:dexDebug'. > com.android.ide.common.internal.LoggedErrorException: Failed to run command: E:\DevResources\sdk\build-tools\21.1.2\dx.bat --dex --no-optimize
2016-04-15 10:51:10
744
原创 git使用
git的配置和第一次提交到仓库 git clone url 从远程仓库克隆项目到本地 ssh keygen 生成ssh key git commit 提交代码到本地仓库 git push origin master 提交本地更改到远程仓库 git push origin master 更新远程仓库的更改,到本地
2016-04-14 10:26:43
414
原创 android自定义大括弧
前几天和公司的android大神聊天,提到他之前写了一个自定义的大括弧控件,面试的时候,难倒了很多人。当时闲着没事,也试了试,发现的确有点难度,也没做出来。刚好这两天做了一些自定义View,所以就又尝试着,写了写。发现其实也不算特别难。最后出来的效果,就是下面这4条大括弧: @Override protected void onDraw(Canvas canvas) {
2016-03-28 10:56:15
854
原创 给TextView加背景
前几天,公司项目中,有一个界面,文字背景中2个圆圈,一大一小。也是因为一直以来,比较头疼自定义控件,所以就趁着周末。就用自定义控件的方式,又做了一次。比较简单。直接上代码: @Override protected void onDraw(Canvas canvas) { //通过比较高度和宽度取最大值作为直径 int radius =
2016-03-27 17:29:58
899
原创 android中handler的使用
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); progressBar= (ProgressBar) findViewById(R.id.pr
2016-03-14 20:28:42
521
转载 Android分包MultiDex原理详解
MultiDex的产生背景 当Android系统安装一个应用的时候,有一步是对Dex进行优化,这个过程有一个专门的工具来处理,叫DexOpt。DexOpt的执行过程是在第一次加载Dex文件的时候执行的。这个过程会生成一个ODEX文件,即Optimised Dex。执行ODex的效率会比直接执行Dex文件的效率要高很多。但是在早期的Android系统中,DexOpt有一个问题,D
2016-03-14 14:32:49
961
原创 WebView的使用
webView= (WebView) findViewById(R.id.webview); titleTV= (TextView) findViewById(R.id.title); iconIV= (ImageView) findViewById(R.id.icon); webView.loadUrl(url); WebSetti
2016-03-12 18:44:15
542
原创 JAVA线程
1、进程:正在运行中的程序每一个进程执行都有一个执行路径,或者叫控制单元。2、线程:进程中一个独立的控制单元。线程在控制着进程的执行。一个进程中至少有一个线程扩展:其实JVM本身就是一个多线程,主线程负责逻辑运算,还有一个负责垃圾回收。线程中为什么要重写run()方法?Thread类用于描述线程,该类就定义了一个功能,用于存储线程要执行的代码,run
2016-03-10 23:26:10
470
原创 Java常用算法总结
/** * 冒泡排序 * 将数组中数据两两进行比较,并交换位置。 * @param data */ public static void mpSort(int[] data) { for(int i=0;i<data.length;i++) { for(int j=data.length-1;j>i;j--) {
2016-02-26 17:48:18
986
原创 android中MVP的理解和实例
这段时间总是被问到android的架构和设计模式。所以研究了一些关于MVC和MVP的知识点。 首先MVC我们都知道,就是模型层(Model)、视图层(View)、控制层(Controller)的缩写。在android中一般我们对数据的增删改查,还有实体类就属于M,layout中的所有xml文件就属于V,所有显示layout的,比如Activity、Fragment等都属于C。
2016-02-25 20:52:33
1451
原创 Android控件架构
android中的控件可以分为2类,分别是View、ViewGroup。而ViewGroup中又可以包含其他子View和子ViewGroup。通过ViewGroup整个界面就形成了一个树形结构。就是我们说的控件树。上层父控件负责下层子控件的测量和绘制、布局。并向下传递监听事件。我们写的FindViewById(),实际上就是以树的深度来便利控件的id,找到对应的控件。 在每棵控件树的顶
2016-02-15 22:30:47
698
原创 android中的倒计时
在Android中比如获取验证码的时候,都会有一个倒计时的按钮,提示多少秒之后重发。这种情况我们就可以使用CountDownTimer这个类,来进行倒计时的操作。 class MyCountDownTimer extends CountDownTimer { public MyCountDownTimer(long millisInFuture, long count
2016-01-15 11:44:50
766
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人