- 博客(33)
- 收藏
- 关注
原创 Ubuntu更新软件源
在ubuntu中更新软件的方法如下三步: 1 .备份原有的软件源文件设置源的文件在 /etc/apt/sources.list中,首先先备份该文件 cp /etc/apt/sources.list /etc/apt/sources.list.bak 2.添加合适的源一般我是添加的网易的源deb http://mirrors.163.com/ubuntu/ trusty main rest
2017-11-20 10:38:28
1856
1
原创 查看当前的Activity
linuxadb shell dumpsys activity | grep “mFocusedActivity” windowsadb shell dumpsys activity | findstr “mFocusedActivity”
2017-10-13 11:47:12
886
原创 AcitivityLifecycleCallbacks接口
在应用中我经常需要管理所有的activity,通常的办法是用一个类的static方法来管理,当这些acitivity创建的时候add,消除的时候remove,那么有没有一种更加优雅的方法来处理呢,我们可以使用ActivityLifeCycleCallbacks接口来实现,这个接口中定义的方法对应activity的生命周期的几个方法。package com.motiongear.simplecc.sh
2017-06-18 01:52:53
477
原创 android动态加载资源
android动态加载资源的一个典型的例子就是app的换肤功能。在应用中不可能将所有的皮肤内置到app中,特别是在一些节日里都会有新的皮肤上线,而且为了更新皮肤而更新整个应用也是不可能的。那么以apk插件的形式提供皮肤包,应用动态的加载的这些皮肤包提供的图片才是一种可取的方式。那么问题来了,要怎么动态加载这么皮肤包呢,需要处理两个方面:获取插件包的resource获取插件包的resource i
2017-06-12 00:40:08
799
原创 MyBatis的基本使用
MyBatis是一个轻量级的ORM库,使用MyBatis可以方便的将POJO类存储到数据库中或者将数据库的数据转换成POJO类,不同于Hibernate等库,MyBatis推荐使用XML配置中书写SQL语句的方式来转换数据,这样极大的提高了灵活性。下面使用一个简单的例子来说明MyBatis的使用。添加类库使用MyBatis需要使用的类库非常少,一个就是MyBatis的核心库,一个就是数据库的驱动
2017-05-30 23:03:04
537
原创 查看当前linux机器的发行版本
有时候通过远程登陆工具登陆到远程服务器上,但是不知道当前的服务器是什么版本,可以使用这个命令查看lsb_release -a
2017-04-27 15:40:27
891
原创 LinearGradient的使用
LinearGradient作为Shade的子类,被经常用作于绘制颜色线性渐变的效果。而且它的用法也很简单,主要是作为paint.setShader()中的参数。所有大致介绍一下构造函数的用法就可以清楚LinearGradient的使用了。构造方法如下: x0,表示颜色的起始点的x值y0,表示颜色起始点的y值x1,表示颜色的终点的X值y1,表示颜色终点的y值colors,表示颜色数组,在
2016-11-10 14:11:37
1132
原创 使用BitmapShader显示圆形头像
对于一些应用app特别是社交app中,通常需要用户登陆后显示一个圆形的头像作为用户的标识。普通的ImageView是不可以实现这个功能的,那么怎么才能画出一个圆形头像呢?BitmapShader可以帮我们解决这个问题。 首先来看看BitmapShader的定义,如下: Shader used to draw a bitmap as a texture. The bitmap can be re
2016-09-13 00:29:10
716
原创 两种获取view的bitmap的方法
在开发中有时候需要获取到一个view当前的图像信息,这个view可能是一个单一的view,也可能是多个view组成的ViewGroup,所以不能通过简单的getBackground的方法获取到这个图像信息。下面提供两个比较方便方法可以获取这个信息通过canvas获取 /** * 通过canvas复制view的bitmap */ private void copyB
2016-09-01 14:17:35
2509
原创 java中Annotation注解的定义与使用
注解也称作元数据,它为我们在源码中添加信息提供了一种形式化的方法,供我们在需要的时候读取有用的信息。 java中内置了三种注解: 注解 使用方法 @Overide 表示当前的方法的定义将覆盖超类中的方法的定义 @Deprecated 编译器将会发警告,表示这个方法或者成员变量将会在之后的版本中放弃 @SuppressWarnnings 关闭不当的编译器警告信息 那么
2016-08-27 17:59:41
1726
原创 Snackbar的使用
在design包中新推了一个Snackbar的控件,这个控件和Toast控件非常类似,但是相比Toast这个控件提供了更多的交互性。在Snackbar中可以设置一个action,当点击这个action的时候,可以作出相应的响应。<?xml version="1.0" encoding="utf-8"?><android.support.design.widget.CoordinatorLayout
2016-08-26 16:28:47
730
原创 NavigationView的基本使用
在design包中有个NavigationView的类,这个类用来实现app中侧滑菜单的效果。使用这个类搭配DrawerLayout可以很好的实现侧滑的效果。 NavigationView主要包含两个部分:headView和menu。headView部分一般用来显示用户头像、用户名、账号信息等等。menu项就是用来显示可选菜单的功能。直接上代码:<?xml version="1.0" encodi
2016-08-25 16:33:21
1387
原创 CyclicBarrier的使用
在java的线程同步器中有一个类叫做CyclicBarrier,使用这个类可以使多个线程在全部达到某种条件的情况下才能执行接下的任务。举个例子来说,田径比赛上,发令员必须等到所有的选手都准备好了之后才开枪,在任何一个运动员准备好之前,其他的运动员都是不可以抢跑的,必须等到所有的运动达到了准备状态才可以。package com.app.async;import java.util.concurren
2016-07-25 01:55:48
422
原创 AsyncTask源码分析
AsyncTask类是我们在开发中经常需要用到的一个类,这个类有个最大的好处就是将耗时的操作和UI操作分开来处理,这样在这一个类中我们就可以很方便的处理耗时操作和UI操作了。 先上一个简单的例子来看看基本的用法。public class MainActivity extends AppCompatActivity { private ImageView mImageView; pri
2016-07-01 01:03:30
282
原创 GreenDAO的使用基本篇
ORM框架简化了java对象和数据库之间的存储转化,使得数据库数据和java对象可以直接转化而不必通过大量重复的对象的分解与构建动作来完成业务逻辑。在java中,比较知名的ORM框架当属Hibernate框架,在Android中也有比较常用的ORM框架,像ORMlite、GreenDAO、DBFlow框架等等。今天就介绍一下GreenDAO框架的使用。GreenDAO作为Android平台上的ORM
2016-06-25 15:03:39
659
原创 Linux下screen命令的使用
在一些生产环境中,需要使用SSH或者是telnet登陆远程的Linux服务器,例如阿里云等。在打开一个终端窗口之后,我们一般会执行命令,然后等待结束关闭窗口。如果碰到了需要长时间执行的任务,例如备份文件、传输海量数据等等耗时的操作时,必须等待当前的任务完成之后才能离开当前的窗口,否则在任务停止之前关闭窗口,也会导致当前任务的终止。如果碰到类似上述的情况,那么就可以考虑使用screen命令来解决该问题
2016-06-24 10:28:44
1159
原创 Linux中使用update-alternatives配置多个jdk
在Linux上安装的jdk版本,有时候会因为不同软件的需求安装不同版本的jdk,如果不想删除之前配置好的java设置,那么可以同update-alternatives这个命令实现按需切换jdk的目的。 以我的本机环境为例,现在已经安装好了open-jdk7,但是我还要安装一套oracle标准的jdk7。首先,下载jdk的安装包,解压到/usr/lib/jvm目录中去。第二步,添加新的jdk的命
2016-06-24 01:43:40
4397
原创 获取当前主题设置的属性
有时候需要动态的获取当前主题中设置的属性,例如文字颜色、背景等等,这个时候就可以利用obtainStyledAttributes方法获取,代码如下: TypedArray a = this.getTheme().obtainStyledAttributes(new int[] {android.R.attr.colorPrimaryDark}); int statusBarColor = a.g
2016-06-24 01:18:27
599
原创 FloatingActionButton的使用
FloatingActionButton是android.support.design包中添加的类,使用这个类可以实现material design中的浮动按钮的效果。 从类的继承关系上来看,FloatingActionButton继承了ImageButton,n那么ImageButton中可以设置的属性也可以很方便的适用在FloatingActionButton上,那么怎么使用这个类呢?
2016-06-19 22:09:57
4763
原创 获取Text文本的高度和宽度
在一些自定义view中,经常需要使用drawText()方法自定义一些文本,那么怎样去获取文本达高度和宽度呢?使用Paint对象就可以实现。获取文本高度: Math.abs(mPaint.descent()) + Math.abs(mPaint.ascent())获取文本宽度: mPaint.measureText(String value)
2016-05-23 01:42:28
3170
原创 AppBarLayout的基本使用
在新版本的android api中提供了android.support.desgin.widget包,在其中提供了许多实现了Material Dsign设计的类,可能是gitgub上有太多Material Design的实现,google希望整合一个官方的类库供大家使用才提供了该支持包,并且这些类库可以兼容到android2.1,所以在应用中完全可以替代一些开源控件的使用。先说AppBarLayou
2016-05-20 14:31:46
5355
原创 使用ItemTouchHelper类轻松实现RecyclerView的拖拽和侧滑
在android的support-v7包中,关注度最高的控件莫过于RecyclerView这个控件了,使用RecyclerView的好处多多,这里也不再赘述。今天要说的主角是ItemTouchHelper这个类,这个类同样是在support-v7的包中,从这个类的描述上来看是这样的。 This is a utility class to add swipe to dismiss and drag
2016-05-17 01:02:13
1376
原创 Quartz之Hello World
Quartz框架是java中的调度框架,可以任意的控制任务执行的开始时间、结束时间、时间间隔和以日历为基准的时间调度。同时Quartz框架将任务Job和触发器Trigger分开,一个Job任务可以同时绑定多个Trigger触发器,这种松耦合的状态使Job可以轻松的复用。Quartz框架设计到的主要的类分为三种:Scheduler:主要的调度类,负责任务的初始化、赋值、调度Job:代表了一个任务类
2016-05-10 19:56:17
431
原创 循环广告栏的实现一
循环广告栏现在基本成了网络应用app类的标配,不管是网易云音乐还是淘宝这类客户端都添加了循环广告栏用来显示最新的活动与新更新的内容。下面就通过继承一个ViewGroup来实现一个简单的这样的控件。主要的功能点如下:可以手动拖动实现弹性滑动可以自动切换到下一页滑动到最后一屏的时候跳转到第一屏幕这个控件是比较简单的控件,没有实现从最后一页平滑过渡到第一页的效果,这个效果我会在下一个循环控件中去实
2016-03-30 11:45:51
577
原创 自定义ViewGroup的一个小例子
自定义ViewGroup的的讲解有很多,没必要再过多的赘述,网上一搜一大把,下面写一个简单的例子,供自己以后复习的时候可以用到。自定义属性 在values下面新建一个attrs.xml文件,用来自定义属性<?xml version="1.0" encoding="utf-8"?><resources> <declare-styleable name="CascadeLayout">
2016-03-22 15:38:20
648
原创 RecyclerView添加addHeader和addFooter方法
在新版本的android系统中RecyclerView作为ListView的优化版本,封装了ViewHolder,这样就可以更加方便的使用这个控件。但是相比较ListView,RecyclerView没有提供相应的addHeaderView和addFooterView方法,我们知道在一些下拉控件的实现中,都是设置了headerView或者是footerView,然后不断的设置padding来实现的。
2016-03-21 22:48:12
801
原创 java中的观察者模式
java在util包中给我们提供了默认了观察者模式的类和接口。观察者可以实现Observer接口,被观察者则是使用Observable这个类来实现。首先我们来看看Observer接口和Observable类的基本使用。首先,我们需要定义我们的观察者实现Observer这个接口。package com.app.motion;import java.util.Observable;import ja
2016-03-19 23:59:06
403
原创 获取系统状态栏和导航栏的高度
获取系统中状态栏的高度int statusBarResId = this.getResources().getIdentifier("status_bar_height", "dimen", "android");int statusBarHeight = this.getResources().getDimensionPixelSize(statusBarResId);获取系统导航栏的高度in
2016-03-01 09:31:51
899
原创 获取图片的采样率
获取图片的采样率使用Bitmapactory解码(decode)资源的时候,系统会尝试分配内存,这个时候如果图片的内存过大,就容易产生内存泄漏的问题。可以使用设置图片的采样率的方法来限制读取到的图片的大小,也就是分辨率的大小。设置BitmapFactory.Opitions的inJustDecodeBounds属性为true,就可以在不分配内存的情况下,获取该图片的大小和类型。BitmapFacto
2016-02-16 11:47:46
4382
原创 多线程中的join()方法
在java的多线程中有一个join()方法,作用是等待其他的线程结束。一直不明白是怎么回事,今天查了一下资料才了解,简单的说一下吧。join()方法是java多线程中的一种协作机制,比如我们现在有一个线程运行着,运行到了某个位置,我们需要另外一个线程返回的人结果,这个时候,我们就需要在当前线程中调用另外一个线程的join()方法,注意是另外一个线程的join()方法,表示当前线程需要等待另外一个线程
2016-02-02 00:53:54
585
原创 SlidingMenu控件的使用
SlidingMenu是github上的一个滑动菜单的开源控件,很多应用都已经使用这个控件做为自己App的侧划菜单,如果不想自己重复的造轮子或者只是简单的侧滑的需求话,完全可以使用这个控件。那么下面就来说说这个控件的使用。下载该控件 从github上通过git clone命令下载这个控件。地址是https://github.com/jfeinstein10/SlidingMenu.git导入到工
2016-01-25 15:51:33
577
原创 SwipeRefreshLayout基本使用
在android的support.V4包中,提供了一个下拉刷新的控件:SwipeRefreshLayout。使用该控件可以实现知乎上的下拉刷新效果。
2015-09-29 16:56:21
370
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人