
积累
文章平均质量分 80
whuthm
这个作者很懒,什么都没留下…
展开
-
重构(一)
重构的原因:代码拓展困难,重复代码多,逻辑复杂,不容易理解,在持续迭代的项目开发中可测试性丧失。重构的目的;显然就是解决上述的问题目前在项目中遇到的一个案例;项目中用到一个开源控件PullToRefresh,在版本迭代中,使用方式是需要调用的页面直接在布局文件中直接调用,然后在Actvity和fragment中获取这个View,设置监听等。引起的问题;在布局中需要重原创 2015-12-06 17:12:55 · 528 阅读 · 0 评论 -
android ActionBar(2)
Tab的使用Tab的使用设置Tab模式final ActionBar actionBar = getSupportActionBar(); actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);添加tabactionBar.addTab(actionBar.newTab().setText("Tab原创 2015-07-12 16:03:05 · 501 阅读 · 0 评论 -
android 沉浸式状态栏(2)
上篇介绍api21以上的沉浸式状态栏,这篇介绍状态栏以及导航栏使用DecorView的setSystemUiVisibility方法package com.whuthm.immersive;import android.os.Build;import android.os.Bundle;import android.util.Log;import android.view原创 2015-07-26 16:45:34 · 919 阅读 · 0 评论 -
C积累
折半查找//while循环中使用了两次int binsearch(int x, int v[], int n) { int low, high, mid; low = 0; high = n - 1; while(low mid = (low + high) / 2; if(v[mid] == x) {原创 2015-05-24 22:12:37 · 378 阅读 · 0 评论 -
通用模板
1.ListView和GridView的Adapter自定义的BaseAdapter类import java.util.ArrayList;import java.util.List;import android.content.Context;import android.view.View;import android.view.ViewGroup;/** * 基原创 2015-06-28 18:07:04 · 447 阅读 · 0 评论 -
Head First---命令模式
命令模式属于对象的行为模式,它把一个请求或者操作封装在一个对象中,以便使用 不同的请求、队列或者日志来参数化其他对象。命令模式也支持可撤销操作。命令模式涉及到五个角色:(1)client:这个客户负责创建一个ConcreteCommand,并设置其接受者。(2)Invoker:这个调用者持有一个命令对象,并在某个时间点调用命令对象的execute方法,将请求付诸实行。(3)Rece原创 2015-06-07 19:52:15 · 556 阅读 · 0 评论 -
面向对象原则
1) Open-Close Principle(OCP),开-闭原则,讲的是设计要对扩展有好的支持,而对修改要严格限制。这是最重要也是最为抽象的原则,基本上我们所说的Reusable Software既是基于此原则而开发的。其他的原则也是对它的实现提供了路径。2) Liskov Substituition Principle(LSP),里氏代换原则,很严格的原则,规则是“子类必须能够替换基类,转载 2015-06-22 17:44:21 · 438 阅读 · 0 评论 -
android ActionBar
ActionBar学习笔记(1)XML文件和手动添加Menu ItemXML文件中添加,然后在activity的onCreateOptionsMenu方法中引用getMenuInflater().inflate(R.menu.main, menu);<menu xmlns:android="http://schemas.android.com/apk/res/android"原创 2015-06-21 19:32:27 · 593 阅读 · 0 评论 -
指针
char amessage[] = "now is the time";char *pmessage = "now is the time";区别:数组amessage分配一段存储空间,指向同一个存储空间,而且始终指向这段地址,而这段存储空间放“now is the time”这段字符串。而指针pmessge指向字符串常量"now is the time"的地址,这个地址可以改变,原创 2015-05-17 17:33:18 · 436 阅读 · 0 评论 -
JNI
windows下使用cygwin编译,cygwin安装教程省略,需要配置 环境变量在eclipse中创建头文件在jni/目录下javah -classpath ../bin/classes -jni com.example.jni.Test根据此命令创建头文件,然后在创建cpp文件在jni目录下$NDK/ndk-build生成so文件原创 2015-05-10 19:53:25 · 532 阅读 · 0 评论 -
Android fragment
fragment的生命周期定义一个BaseFragment添加log来显示fragment的生命周期package com.example.fragment;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.support.an原创 2015-07-12 16:15:59 · 507 阅读 · 0 评论 -
android fragment(2)
fragment之间传值1.从activity传值给fragment或者从fragment传值给fragment(1)构造函数中传值或者通过set方法传值new AFragment("data");注意fragment一定要有一个无参数的构造函数,因为在恢复fragment的时候会走无参数的构造函数所以通过此种方式传值会有一个缺点,当恢复fragment的时候,没有带上数据参数原创 2015-08-08 17:21:13 · 743 阅读 · 1 评论 -
Repository模式
Repository模式,使用泛型Repository接口并不太合适,因为Repository接口是提供给Domain层的操作契约,不同的entity对于Domain来说可能有不同的操作约束,比如User可能不应该被删除,bookOrder可能不应该被修改,也就是说domain层根本就不应该能调用_repository.Delete(user),_repository.Update(bookOrd转载 2015-12-20 17:42:51 · 1955 阅读 · 0 评论 -
android Touch事件
View的Touch事件,在于三个方法onInterceptTouchEvent,onTouchEvent,dispatchTouchEvent事件分发:dispatchTouchEvent事件拦截:onInterceptTouchEvent事件处理:onTouchEvent上层view为子view,下层view为父view当只要有onTouch原创 2015-12-13 16:51:12 · 562 阅读 · 0 评论 -
android Picker选择器
定义了一个通用的base adapterpackage com.whuthm.picker;import java.util.ArrayList;import java.util.List;import android.content.Context;import android.view.View;import android.view.ViewGroup;/** * 基类原创 2015-11-15 15:46:10 · 1839 阅读 · 0 评论 -
积累
1.service和threadService 与 Thread 的区别很多时候,你可能会问,为什么要用 Service,而不用 Thread 呢,因为用 Thread 是很方便的,比起 Service 也方便多了,下面我详细的来解释一下。1). Thread:Thread 是程序执行的最小单元,它是分配CPU的基本单位。可以用 Thread 来执行一些异步的操作。2). Serv原创 2015-10-25 21:35:55 · 362 阅读 · 0 评论 -
android mvp
MVP(Model View Presenter)模式是著名的MVC(Model View Controller)模式的一个演化版本,目前它在Android应用开发中越来越重要了。什么是MVP?MVP模式可以分离显示层和逻辑层,所以功能接口如何工作与功能的展示可以实现分离,MVP模式理想化地可以实现同一份逻辑代码搭配不同的显示界面。首先要澄清就是MVP不是一个结构化的模式,原创 2015-09-05 16:29:11 · 643 阅读 · 0 评论 -
android 相机图库调用以及裁剪
相机调用private void selectPicFromCamera() { mOutputFile = getPicFile(getActivity()); Log.e(TAG, "selectPicFromGallery : " + mOutputFile.getPath() + " "原创 2015-08-16 11:54:40 · 724 阅读 · 0 评论 -
android 沉浸式状态栏
针对5.0(api21)首先定义主题 #4876FF #4876FF @android:color/white #ffff5722 在values-v21的styles.xml中定义原创 2015-07-19 19:32:29 · 890 阅读 · 1 评论 -
android Dialog和EditText
1.Dialog全屏或者固定宽度public void installContent() { /* We use a custom title so never request a window title */ mWindow.requestFeature(Window.FEATURE_NO_TITLE); //输入法弹出//原创 2015-08-22 14:08:28 · 2182 阅读 · 1 评论 -
android 日历(1)
CalendarController类:计算日历的一些常用方法package com.qingqing.base.view.calendar;import java.util.ArrayList;import java.util.Calendar;import java.util.List;import java.util.Locale;/** * @author whuthm原创 2015-08-09 15:08:06 · 649 阅读 · 2 评论 -
android 定时器
定时器的三种方法。(1)Handler//开始定时 public void startTimer() { //移除MSG_TIMING mHandler.removeMessages(MSG_TIMING); Message msg = Message.obtain(); msg.what = MSG_TIMING; msg.arg1 = TYPE_START;原创 2015-04-19 16:51:50 · 523 阅读 · 0 评论 -
Linux 文件权限
在linux文件系统中,每一个文件或者目录都有访问权限,此权限决定了谁能访问以及如何访问这些文件和文件目录。用命令ll即可查看文件对应的权限:"drwxr-xr-x"此表示文件的权限,有十个字符,第一个字符代表文件的类型,第2-4字符代表文件所有者的权限,第5-7字符代表文件所有者所在用户组访问的权限,第8-10字符代表其他用户的访问权限。文件类型:_:普通文件原创 2015-04-12 10:53:03 · 1326 阅读 · 0 评论 -
vi
功能最强在的编辑器——vivi是所有UNIX系统都会提供的屏幕编辑器,它提供了一个视窗设备,通过它可以编辑文件。当然,对UNIX系统略有所知的人, 或多或少都觉得vi超级难用,但vi是最基本的编辑器,所以希望读者能好好把它学起来,以后在UNIX世界里必将畅行无阻、 游刃有余,因为其他几种文本处理器并非UNIX标准配备。说不定别人的Linux机器没安装joe或pico,如果您不会vi原创 2015-04-06 10:56:59 · 401 阅读 · 0 评论 -
Ant中的macrodef(宏定义)详细解析
点击打开链接转载 2014-11-26 13:39:49 · 999 阅读 · 0 评论 -
ant学习-注意点
xmlproperty读取xml文件test.xml文件 bar ant的build.xml文件 ant main命令执行结果原创 2014-11-26 13:58:43 · 559 阅读 · 0 评论 -
android ant学习
1.新建一个android项目AntTest2.使用android update project -p /AntTest命令生成build.xml ant.properties local.properties等文件3.keytool -genkey -alias whuthm -keyalg RSA -validity 20000 -keystore anttest.keys原创 2014-11-26 13:44:03 · 581 阅读 · 0 评论 -
ant的基本使用
Ant是什么? Ant是一种基于Java和XML的build工具。2 下载、安装Ant 安装Ant下载.zip文件,解压缩到c:/ant1.3(后面引用为%ANT_HOME%)2.1 在你运行Ant之前需要做一些配置工作。? 将bin目录加入PATH环境变量。 ? 设定ANT_HOME环境变量,指向你安装Ant的目录。在一些OS上,Ant的脚本可以猜测ANT_H转载 2014-11-26 13:36:59 · 486 阅读 · 0 评论 -
Head First---装饰者模式
举一个简单的例子:一种咖啡,添加原创 2014-11-16 10:44:19 · 593 阅读 · 0 评论 -
Windows下NDK开发环境的搭建(Cygwin+Android-SDK+NDK)
(转载链接:http://hi.baidu.com/j_key/item/bdfe28f6b1758ad56325d259)一:什么是NDK?NDK 提供了一系列的工具,帮助开发者快速开发C(或C++)的动态库,并能自动将so 和java 应用一起打包成apk。这些工具对开发者的帮助是巨大的。NDK 集成了交叉编译器,并提供了相应的mk 文件隔离CPU、平台、ABI 等差异转载 2013-11-18 09:14:09 · 1011 阅读 · 0 评论 -
android TextView中图片和文字的灰显
在某种情况下,menu的某一子项(图标和文字)要求不能点击并且灰显。1. menu子项menu_item.xml<TextView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="w原创 2013-10-18 09:56:00 · 4843 阅读 · 0 评论 -
android notification和peddingintent结合使用遇到的问题
这段时间公司项目涉及到在状态栏中显示通知,然后点击通知后弹出activity显示文本。1.创建通知 NotificationManager nm = (NotificationManager)mContext.getSystemService(Context.NOTIFICATION_SERVICE); Notification notification = new No原创 2013-10-08 12:35:16 · 1038 阅读 · 0 评论 -
Head First---状态模式
工作中设计到状态模式的功能是系统升级,在没有认识状态模式时,实现系统升级的功能,就是使用一大堆的int型来表示状态,如正在检查版本,检查失败,检查成功,下载中,下载失败,下载成功,系统更新中,更新失败,更新成功等。然后使用大量的if语句来判断状态后来继续后续的操作。假如要添加一种状态,比如在升级前要检查rom包的状态,检测不成功清除所有数据重新开始,检测成功则开始升级。这时就需要大量修改代码,原创 2014-12-21 17:16:06 · 551 阅读 · 0 评论 -
Head First---工厂模式
工厂处理创建对象的细节。(1)简单工厂:简单工厂其实不是一个模式,比较像一种编程习惯。PizzaStore中由一个对象来负责所有具体Pizza类的实例化。public class SimplePizzaFatory() { public Pizza createPizza(String type) { Pizza pizza = null; if(type.equal原创 2014-12-07 16:26:22 · 642 阅读 · 0 评论 -
android scroller
一、scrollTo与scrollBy的区别 (1)scrollTo的源码 /** * Set the scrolled position of your view. This will cause a call to * {@link #onScrollChanged(int, int, int, int)} and the view will be原创 2015-03-29 12:44:22 · 444 阅读 · 0 评论 -
android Binder机制
一、Bindr框架Binder是一种架构,这种架构提供了服务器端口、Binder驱动、客户端接口三个模块。如下图:客户端:客户端通过Ixxx.Stub.asInterface()来获得代理,同时将BinderProxy传给Proxy对象,其中BinderProxy即为要获得的mRemote。Binder驱动:通过获得的mRemote引用,调用transact()方法,向远程原创 2015-03-01 17:01:34 · 644 阅读 · 0 评论 -
git
项目一直使用git来管理代码,也用过svn,但是还是git用起来比较舒服。clone 代码git clone url切换分支(直接同步远程分支,创建新的本地分支)git fetchgit checkout [local branch]切换分支(本地创建新的分支)git checkout -b origin/[remote branch]查看分支(本地以及远程)g原创 2015-01-25 10:23:10 · 444 阅读 · 0 评论 -
Head First---单件模式
单间模式是工作中遇到的比较多的一种模式,也叫单例模式。单间模式确保一个类只有一个实例,并提供一个全局访问点。创建单例模式主要有四种方法:(1)第一种要介绍的方法,也是我在工作中用的最多的方法,看过Head First后就了解此方法的最大缺点。public class Singleton { private static Singleton uniqueInstance;原创 2014-12-14 18:05:02 · 441 阅读 · 0 评论 -
一些问题
1.最近遇到的一个问题:java.lang.IllegalArgumentException: Wrong state class, expecting View State but received class ...... instead. This usually happens when two views of different type have the same id in t原创 2015-01-18 10:04:49 · 594 阅读 · 0 评论 -
一些问题(2)
关于监听盒子的外部存储器(USB,sdcard等)一种很常见的方法是注册监听广播ACTION_MEDIA_MOUNTED、ACTION_MEDIA_UNMOUNTED和ACTION_MEDIA_REMOVED,来判断外部存储器的挂载和卸载,但是当有两个USB接口时,其中一个接入,另一个接入后拔出,就有可能有问题,还有一个问题,当重新启动应用时无法判断usb是否已接入,因为不是粘性广播。原创 2015-01-18 11:27:24 · 577 阅读 · 0 评论