自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

月轩的专栏

To be or not to be !

  • 博客(95)
  • 收藏
  • 关注

原创 平时遇见的错误集合

问题1:实例化一个Thread并start()之后,等待这个线程isAlive()==false 时再次去start()该线程时会报如下错误:the thread already started;解决方法:每次start()线程之前都要重新实例化一次; 问题2:使用HttpURlConnection.getResponseCode()方法时报错:NetMainThreadExcepti

2015-03-23 10:07:18 347

转载 C# Mutex对象的使用

这里我们主要介绍C# Mutex对象,包括介绍控制好多个线程相互之间的联系等方面。

2015-09-23 17:26:18 333

原创 HandlerThread 的使用

Android API提供了HandlerThread来创建线程。官网的解释是:Handy class for starting a new thread that has a looper.The looper can then be used to create handler classes. Note that start() must still be called.

2015-06-18 18:53:45 355

转载 Android中Application类用法

Application类Application和Activity,Service一样是Android框架的一个系统组件,当Android程序启动时系统会创建一个Application对象,用来存储系统的一些信息。Android系统自动会为每个程序运行时创建一个Application类的对象且只创建一个,所以Application可以说是单例(singleton)模式的一个类。

2015-06-18 17:44:46 334

原创 Android获取当前系统时间

Android获取当前系统时间long time=System.currentTimeMillis();final Calendar mCalendar=Calendar.getInstance(); mCalendar.setTimeInMillis(time); 取得小时:mHour=mCalendar.get(Calendar.HOUR); 取得分钟:mMinuts=mCalenda

2015-05-14 21:22:14 519

转载 Android中<meta-data>的使用

在AndroidManifest.xml中,元素可以作为子元素,被包含在、 、和元素中,但不同的父元素,在应用时读取的方法也不同。    元素用name-value对的格式给其父组件提供任意可选的数据。一个组件元素能够包含任意多个子元素,所有这些元素中定义的值会被收集到一个Bundle对象中,并且提供给组件的PackageItemInfo.metaData属性字段。通常值是通过其value属性

2015-04-24 17:03:37 5585

转载 Java并发编程:Callable、Future和FutureTask(原文链接:http://www.cnblogs.com/dolphin0520/p/3949310.html)

在前面的文章中我们讲述了创建线程的2种方式,一种是直接继承Thread,另外一种就是实现Runnable接口。  这2种方式都有一个缺陷就是:在执行完任务之后无法获取执行结果。  如果需要获取执行结果,就必须通过共享变量或者使用线程通信的方式来达到效果,这样使用起来就比较麻烦。  而自从Java 1.5开始,就提供了Callable和Future,通过它们可以在任务执行完毕之后得到任务

2015-04-21 18:00:51 638

原创 向Web站点发送GET请求、POST请求

分享一个向Web站点发送GET请求、POST请求的工具类,方便以后使用。import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.PrintWriter;import java.net.MalformedURLExcepti

2015-04-18 16:24:48 690

原创 Android版多线程聊天室——ServerSocket和Socket的使用

每一个手机客户端使用Socket与服务器端进行通信,把消息发送给服务器,并监听和显示服务器端发来的消息。    使用ServerSocket创建TCP服务器端,服务器为每个Socket单独创建一个线程用来与客户端进行通信。服务器端代码如下:import java.io.IOException;import java.net.ServerSocket;import java.

2015-04-17 15:53:20 578

原创 使用OpenGL ES绘制3D图形

使用OpenGL ES绘制3D图形需要注意的几点是:1. Android的三维坐标系默认原点位于屏幕中央。2. 绘制3D图形时,各个顶点的坐标是以原点为参照的,比如顶点坐标为(0.5,0,0),    表示顶点在正x轴的二分之一处。3. 绘制前需调用glTranslatef(x, y, z) 函数设置图形的参照原点。4. OpenGL ES绘制的

2015-04-15 20:14:38 598

原创 显示在标题上的进度条

若显示带进度的进度条:1 requestWindowFeature(Window.FEATURE_PROGRESS); 2 setProgressBarVisibility(true); 3 setProgress(10);  若显示不带进度的进度条:1 requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);

2015-03-23 10:07:27 283

原创 Android版多线程下载器核心代码分享

首先给大家分享多线程下载核心类: 1 package com.example.urltest; 2 3 import java.io.IOException; 4 import java.io.InputStream; 5 import java.io.RandomAccessFile; 6 import java.net.HttpURLConnectio

2015-03-23 10:07:22 349

原创 Java RandomAccessFile的使用(转载的文章,出处http://www.2cto.com/kf/201208/149816.html)

Java的RandomAccessFile提供对文件的读写功能,与普通的输入输出流不一样的是RamdomAccessFile可以任意的访问文件的任何地方。这就是“Random”的意义所在。RandomAccessFile的对象包含一个记录指针,用于标识当前流的读写位置,这个位置可以向前移动,也可以向后移动。RandomAccessFile包含两个方法来操作文件记录指针。long getFi

2015-03-23 10:07:13 376

原创 怎样用AIDL Service 传递复杂数据

大家都知道在Android中通过AIDL可以跨进程调用Service中的数据,网上也有很多实例,但是大部分实例都是关于基本数据类型的远程调用,很少讲到复杂数据的调用,今天我用一个例子来演示一下怎样用AIDL Service 传递复杂数据。我们分2步开始:第一步:部署我们的服务端,也就是Service端:1:在Service端我先自定义2个类型:Person和Pet。因为我们需要跨进程传

2015-03-23 10:07:09 294

原创 绑定本地Service并与之通信

绑定Service需要调用public boolean bindService (Intent service, ServiceConnection conn, int flags);传入一个ServiceConnection 对象,该对象是一个接口,实例化时需要实现该接口,它的作用就是获得Service的IBinder对象,通过IBinder对象可以实现与Service的通信。Ser

2015-03-23 10:07:04 323

原创 用ContentProvider向系统增加联系人

发现对系统的联系人进行操作的api很乱,感觉逻辑有点不清楚......主要用到这4个类:android.provider.ContactsContract.CommonDataKinds.Email;android.provider.ContactsContract.CommonDataKinds.Phone;android.provider.ContactsContract.Common

2015-03-23 10:07:00 271

原创 正弦余弦曲线的绘制动画

使用SurfaceView实现正弦余弦曲线的绘制动画!主要代码如下: 1 package com.example.surfaceviewtest; 2 3 import java.util.Timer; 4 import java.util.TimerTask; 5 6 import android.app.Activity; 7 impo

2015-03-23 10:06:55 667

原创 将博客搬至CSDN

CSDN和博客园是我最喜欢的两个技术论坛,之前一直在博客园写博客,现在准备同步到CSDN上!

2015-03-23 10:06:51 280

原创 用属性动画实现小球的落地和弹起

所有代码如下: 1 package com.example.animation; 2 3 import android.animation.Animator; 4 import android.animation.AnimatorListenerAdapter; 5 import android.animation.AnimatorSet; 6 impor

2015-03-23 10:06:48 785

转载 Android中Matrix的pre post set方法理解(转载来源:Linux社区 作者:zjmdp)

虽说以前学习过线性代数和图形学原理,但是在实际中碰到matrix还是疑惑了好一阵子,今天通过向同事请教终于找到一点门路,特总结如下:Matrix主要用于对平面进行缩放,平移,旋转以及倾斜操作,为简化矩阵变换,Android封装了一系列方法来进行矩阵变换,其中包括pre系列方法:preScale,preTranslate,preRotate,preSkew,set系列方法:setScale,se

2015-03-23 10:06:44 340

转载 Android中View绘制流程以及invalidate()等相关方法分析(转载的文章,出处在正文已表明)

转载请注明出处:http://blog.csdn.net/qinjuning               前言: 本文是我读《Android内核剖析》第13章----View工作原理总结而成的,在此膜拜下作者 。同时真挚地向渴望了解     Android 框架层的网友,推荐这本书,希望你们能够在Android开发里学到更多的知识 。

2015-03-23 10:06:39 260

原创 Android清空画布

public void clear() { Paint paint = new Paint(); paint.setXfermode(new PorterDuffXfermode(Mode.CLEAR)); canvas.drawPaint(paint); paint.setXfermode(new PorterDu

2015-03-23 10:06:36 2206

原创 Android中的自定义属性的实现

Android开发中,如果系统提供的View组件不能满足我们的需求,我们就需要自定义自己的View,此时我们会想可不可以为自定义的View定义属性呢?答案是肯定的。我们可以定义自己的属性,然后像系统属性一样用在layout布局中。通过下面3步既可以完成自定义属性:第一步:在values文件夹下的attrs.xml文件(如果没有可以收到建立)中定义属性资源文件1 xml versio

2015-03-23 10:06:31 221

原创 Android中为窗口定义主题

在res/values/styles文件夹中定义如下:1 style name="myTheme">2 item name="android:windowNoTitle">trueitem>3 item name="android:windowFullscreen">trueitem>4 item name="android:wi

2015-03-23 10:06:29 300

原创 Android中解析XML的方法

假设我要解析如下的XML文件:1 xml version="1.0" encoding="UTF-8"?>2 books>3 book price="99.0" 出版日期="2008年">疯狂java讲义book>4 book price="199.0" 出版日期="2009年">疯狂android讲义book>5 book price="79.0"

2015-03-23 10:06:27 267

原创 新建线程与UI线程间的通信

现在用一个实例来演示一下自己的新建线程与UI线程间的通信。UI界面包含3个控件:一个输入框,用来输入数字;一个显示框,用来显示从2开始,到输入数字之间的所有质数;一个按钮,点击后获取输入框输入的数字,交给新建线程处理,线程计算质数后把结果传给UI线程,UI线程显示结果到显示框。XML如下: 1 xml version="1.0" encoding="utf-8"?>

2015-03-23 10:06:22 278

原创 使用java.util.Timer来周期性的执行制定的任务

使用java.util.Timer来周期性的执行制定的任务 1 public class HandlerTest extends Activity { 2 int[] images = new int[] { 3 R.drawable.baiyang, R.drawable.jinniu, R.drawable.shuangyu 4 };

2015-03-23 10:06:20 440

原创 Android中为APP创建快捷方式的原理(自己的理解)

我们首先来看Android中为APP创建快捷方式的原理:从图上可以看出,Android大致分7步完成快捷方式的创建:第一步:Android系统的launcher程序会调用它的pickShortcut()方法去启动系统的pickActivity程序(应用);第二步:pickActivity程序(应用)启动后会调用它的CheckIntentFilter()方法,去在系统中寻找可以创建快

2015-03-23 10:06:15 472

原创 View.setTag()的作用

//这个东西在一些需要用到Adapter自定控件显示方式的时候非常有用//Adapter 有个getView方法,可以使用setTag把查找的view缓存起来方便多次重用public View getView(int position, View convertView, ViewGroup parent) { ViewHolder vh; if (co

2015-03-23 10:06:11 428

原创 用3种方法在 operator= 中处理“自我赋值”

假设你建立一个class 用来保存一个指针指向一块动态分配的位图。1 class Bitmap {......};2 class Widget{3 ...4 private:5 Bitmap* pb ;6 };1 Widget& Widget::operator= (const Widget& rhs)2 {3 del

2015-03-23 10:06:06 287

原创 关于 const 成员函数

成员函数如果是const意味着什么?有两个流行概念:物理常量性和逻辑常量性。C++对常量性的定义采用的是物理常量性概念,即const 成员函数不可以更改对象内任何non-static成员变量。例如: 1 class CTextBlock 2 { 3 public: 4 ...... 5 std::size_t length() const; 6 7

2015-03-23 10:06:02 218

原创 复制构造函数 与 赋值操作函数

1 class Widget{ 2 3 Widget(); //默认构造函数 4 5 Widget(const Widget& rhs); //复制构造函数 6 7 Widget& operator= (const Widget& rhs);//赋值操作函数 8 9 };10 Widget w1; //

2015-03-23 10:05:59 247

原创 Command 模式

Command 模式通过将请求封装到一个对象(Command)中,并将请求的接受者存放具体的 ConcreteCommand 类中(Receiver)中,从而实现调用操作的对象和操作的具体实现者之间的解耦。Command 模式结构图中,将请求的接收者(处理者)放到 Command 的具体子类ConcreteCommand 中,当请求到来时(Invoker 发出 Invoke 消息激活

2015-03-23 10:05:55 205

原创 Mediator 模式

在面向对象系统的设计和开发过程中,对象之间的交互和通信是最为常见的情况,因为对象间的交互本身就是一种通信。在系统比较小的时候,可能对象间的通信不是很多、对象也比较少,我们可以直接硬编码到各个对象的方法中。但是当系统规模变大,对象的量变引起系统复杂度的急剧增加,对象间的通信也变得越来越复杂,这时候我们就要提供一个专门处理对象间交互和通信的类,这个中介者就是 Mediator 模式 1 /

2015-03-23 10:05:50 324

原创 求一棵普通树的两个结点的最低公共祖先

一棵普通树,树中的结点没有指向父节点的指针,求一棵普通树的两个结点的最低公共祖先。代码如下,我太懒没有加注释,大家自己看吧! 1 #include 2 #include 3 #include 4 using namespace std; 5 6 struct TreeNode //节点 7 { 8 char m_nValue;

2015-03-23 10:05:46 353

原创 Memento 模式

Memento 模式的关键就是要在不破坏封装行的前提下,捕获并保存一个类的内部状态,这样就可以利用该保存的状态实施恢复操作。 1 /////////Originator.h////////////////////////////////////////// 2 #pragma once 3 #include string> 4 using namespace std;

2015-03-23 10:05:41 211

原创 字符串转换为整数

没有啥好解释的啦,关键是要考虑所有的情况,比如正负号,溢出,输入等。 1 enum Status {kValid = 0 , kInvalid}; 2 bool g_nStatus = kValid ; 3 4 int StrToInt(const char* str) 5 { 6 g_nStatus = kInvalid; 7 long long

2015-03-23 10:05:39 195

原创 Observer 模式

Observer模式要解决的问题为:建立一个一(Subject)对多(Observer)的依赖关系,并且做到当“一”变化的时候,依赖这个“一”的多也能够同步改变。最常见的一个例子就是:对同一组数据进行统计分析时候,我们希望能够提供多种形式的表示 (例如以表格进行统计显示、 柱状图统计显示、 百分比统计显示等) 。这些表示都依赖于同一组数据,我们当然需要当数据改变的时候,所有的统计的显示都能够同

2015-03-23 10:05:34 235

原创 不用新的变量,交换两个变量的值。

不用新的变量,交换两个变量的值。比如有2个变量a , b ,我们希望交换他们的值。下面介绍两种不同的解法:第一种:基于加减法a = a + b ;   //先让a等于和b = a - b ;  //和减去原来b的值得到原来a的值,赋值给ba = a - b ; //和减去改变后b的值(原来a的值)得到原来b的值,赋值给a 第二种:基于异或运算a = a ^ b  //

2015-03-23 10:05:30 337

原创 不用加减乘除做加法

写一个函数,求俩个整数之和,要求函数体内不得使用+、-、*、/ 四则运算符合。看到题目,我们知道,现在只有位运算可以用了,那就用位运算吧。第一步:对2个数的每一位相加,但不进位,我们可以用异或运算完成。第二步:找到进位的位置,并计算进位的值,我们先用与运算可以找到位置,然后左移一位,得到进位的值(比如:001 + 101  进位发生在最低位,进位值为 010)第三步:第一步的值和第

2015-03-23 10:05:28 231

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除