- 博客(98)
- 资源 (1)
- 收藏
- 关注
转载 Android TextView 自动换行问题
Android的TextView在显示文字的时候有个问题就是一行还没显示满就跳到下一行,原因是:1) TextView在显示中文的时候 标点符号不能显示在一行的行首和行尾,如果一个标点符号刚好在一行的行尾,该标点符号就会连同前一个字符跳到下一行显示;2)一个英文单词不能被显示在两行中( TextView在显示英文时,标点符号是可以放在行尾的,但英文单词也不能分开 );如果只是想让标
2012-06-02 13:46:35
72500
11
转载 android屏幕适配
如何将一个应用程序适配在不同的手机上,虽然这不算是一个技术问题,但是对于刚刚做屏幕的开发人员来说,还真不是一件多么简单的事情。 首先:你需要在AndroidManifest.xml文件的元素如下添加子元素supports-screens android:largeScreens="true" android:normalScreens="true" an
2012-03-08 16:00:04
4557
1
原创 Android设置RadioButton在文字的右边
效果图如下:<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical
2012-02-19 15:49:13
23782
1
转载 android setTag (int key, Object tag)抛出IllegalArgumentException的问题
setTag是android的view类中很有用的一个方法,可以用它来给空间附加一些信息,在很多场合下都得到妙用。setTag(Object tag)方法比较简单,这里主要谈一谈带两个参数的setTag方法。官方的api文档中提到:“ The specified key should be an id declared in the resources of the applica
2012-02-17 12:06:54
11157
3
原创 装饰设计模式
装饰设计模式就是对已有的对象的功能进行增强简单小例子:class Person{ void chifan() { System.out.println("chifan"); }}/*为了不随便改变原有的代码。还要增强chifan功能。那么就定义一个类,对原有对象进行装饰。*/class NewPerson{ private Person p; NewP
2012-01-23 06:16:13
8349
1
转载 Android px和dip及sp的区别及转换代码
px (pixels)像素 -- 一般我们HVGA代表320x480像素,这个用的比较多。 dip或dp (device independent pixels)设备独立像素 -- 这个和设备硬件有关,一般我们为了支持WVGA、HVGA和QVGA cwj推荐使用这个,不依赖像素。 sp (scaled pixels — best for text size)放大像素-- 主要处理字体的大
2012-01-19 09:14:24
2736
原创 Android获取并设置Activity的亮度
此API只适合2.1以上版本: /** * 判断是否开启了自动亮度调节 * * @param aContext * @return */ public static boolean isAutoBrightness(ContentResolver aContentResolver) { boolean automicBrightness = false; t
2012-01-17 23:53:52
10105
3
原创 Android和JavaScript互相调用
Html页面和Java代码结合的方式一般用在界面经常被更改 的情况下,可以讲html放在网络中,软件一打开就会访问网络获取到最新的界面。缺点是会受到网络信号的影响,从而导致访问速度慢。1.用WebView来显示HTML代码2.允许WebView执行JavaScript webView.getSettings().setJavaScriptEnabled(true);3.获取到
2012-01-06 18:17:12
4225
1
原创 观察者设计模式(observer)
Observer(观察者)模式是比较常用的一个模式,他让主题和观察者之间松耦合定义:定义对象间一对多的依赖,这样一来,当一个对象发生改变,其他依赖者会得到通知并自动更新.作为观察者,主题只知道他实现一个接口 Oberver,主题不需要知道他具体是谁,需要实现什么操作.任何时候我们都可以增加新的观察者.因为主题实现的是一个实现oberver的抽象接口列表,所以
2012-01-04 00:15:10
2863
原创 线程并发库(通信,线程内共享数据)
通信1. 等待在同步代码中调用锁对象的wait()方法,可以让当前线程等待 2. 通知唤醒使用锁对象的notify()方法可以唤醒在该对象上等待的随机一个线程使用锁对象的notifyAll()方法可以唤醒在该对象上等待的所有线程示例:创建三个线程,其中一个线程内部执行3次打印,第二个线程内部执行5次打印,第三个线程内部执行7次打印,如此交替执行10次。p
2011-12-22 16:13:28
2524
原创 线程并发库(计时器,同步)
计时器: public static void main(String[] args) throws InterruptedException { new Timer().schedule(new MyTask(), 3000); // 安排一个任务, 3秒之后执行 new Timer().schedule(new MyTask(), new Date(111, 10, 29, 10
2011-12-22 14:44:09
2978
原创 线程并发库(创建线程、守护线程、暂停线程)
开启线程第一种方式:public class test { public static void main(String[] args) { Thread t1 = new MyThread(); t1.start(); // 开线程 for (int i = 0; i < 100; i++) System.out.println(Thread.currentThrea
2011-12-22 13:39:35
2922
转载 Socket和Http通信
1、TCP连接手机能够使用联网功能是因为手机底层实现了TCP/IP协议,可以使手机终端通过无线网络建立TCP连接。TCP协议可以对上层网络提供接口,使上层网络数据的传输建立在“无差别”的网络之上。建立起一个TCP连接需要经过“三次握手”:第一次握手:客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;第二次握手:服务器收到syn包,必须
2011-12-13 00:52:52
7835
原创 socket实现用户登陆
需求:通过客户端键盘录入用户名,实现登录。服务端对客户端的发送过来的用户名进行校验。如果该用户存在,服务端显示用户登录,并回馈给客户端欢迎光临。如果该用户不存在,服务端显示用户尝试登录,并回馈给客户端,该用户不存在。另外,客户端最多只能尝试登录三次。服务端也一样作此限定。效果图(左图为客户端,右图为服务器端): 思路:客户端:1,建立socket服务
2011-11-28 16:50:14
14231
3
原创 socket实现图片上传
实现思路:在客户端获取到文件流,将文件流写入到通过socket指定到某服务器的输出流中,在服务器中通过socket获取到输入流,将数据写入到指定的文件夹内,为了提供多用户同时上传,这里需要将在服务器上传客户端的文件操作放在另开启一个线程去运行。完整代码:import java.net.*;import java.io.*;/*服务端将获取到的客户端封装到单独的线程中。*/
2011-11-28 13:27:23
9025
1
原创 Android使用缓存优化ListView
ListView调用Adapter的getView方法获取每一个Item布局,将这些已经获得的Item布局放入缓存,将大大提高获取数据的效率,而且节省更多的流量,将数据进行缓存有两种方法是,一种是将内存缓存一种是sd卡缓存,在此分别进行演示。sd卡缓存:sd卡缓存是将下载的数据保存到sd卡中,当再次要获取数据时,首先要判断sd卡中是否存在,如果存在的话,就直接读取sd卡中的数据,如果不存在
2011-11-25 20:04:50
10698
3
原创 Android捕获全局异常信息并实现上传
在做项目时,经常会把错误利用异常抛出去,这样在开发时就可以通过手机抛出的异常排查错误。但是当程序开发完毕,版本稳定,需要上线时,为了避免抛出异常影响用户感受,可以用UncaughtExceptionHandler捕获全局异常,对异常做出处理。比如我们可以获取到抛出异常的时间、手机的硬件信息、错误的堆栈信息,然后将获取到的所有的信息发送到服务器中,也可以发送到指定的邮件中,以便及时修改bug。示
2011-11-23 01:43:28
12569
4
原创 Android之AsyncTask的用法
为什么要使用AsyncTask?在开发Android应用时必须遵守单线程模型的原则: Android UI操作并不是线程安全的并且这些操作必须在UI线程中执行。在单线程模型中始终要记住两条法则:1. 不要阻塞UI线程 2. 确保只在UI线程中访问Android UI工具包 当一个程序第一次启动时,Android会同时启动一个对应的主线程(Main Thread),主线程主要负责处理
2011-11-22 01:22:50
13117
2
原创 Android进程与生命周期介绍
Android系统会尽可能长的延续一个应用程序进程,但在内存过低的时候,仍然会不可避免需要移除旧的进程。为决定保留或移除一个进程,Android将每个进程都放入一个“重要性层次”中,依据则是它其中运行着的组件及其状态。重要性最低的进程首先被消灭,然后是较低的,依此类推。重要性共分五层,依据重要性列表如下: 1. 前台进程•是用户操作所必须的,任一时间下,仅有少数进程会处于前台,仅当内
2011-11-18 15:30:53
5512
1
原创 Linux-dpkg软件包和APT软件包管理操作
dpkg软件包管理工具:dpkg(Debian Package)管理工具,Ubuntu 相关的软件包文件使用 .deb 后缀,就是因为Ubuntu 与 Debian GNU/Linux 发行版有着紧密的关系。如果我们手动下载了.deb 包,可以通过以下命令进行操作://安装 Debian 包裹文件:sudo dpkg -i debfilename//列出包裹包含的内容:su
2011-11-16 01:53:16
4455
原创 Linux-常用指令
文件目录操作命令--ls 显示文件和目录列表。-l 列出文件的详细信息,-a 列出当前目录所有文件,包含隐藏文件--mkdir 创建目录 mkdir roomA 。-p 父目录不存在情况下先生成父目录--cd 切换目录--touch 生成一个空文件--echo 生成一个带内容文件 echo "you are the boy">book.txt--cat、tac 显示文本
2011-11-15 23:34:08
1891
1
原创 Linux-简介
Linux 简介: Linux是一个自由的,免费的,源码开放的操作系统。也是开源软件中最著名的例子。其最主要的目的就是为了建立不受任何商品化软件版权制约的,全世界都能使用的类Unix兼容产品.而我们将服务器部署在Linux将会更加的稳定、安全、高效以及出色的性能这时windows无法比的。注:UNIX,是一个强大的多用户、多任务操作系统,支持多种处理器架构,是商业软件,最早由KenThom
2011-11-15 20:28:37
11126
3
原创 正则表达式总结
正则表达式用于操作字符串的规则,这些规则由一些符号所组成。使用正则表达式可以进行更复杂的操作,而且这种复杂的操作要比方法短的多。功能:1,匹配。使用的是String类中的matches方法。2,切割。使用的String类split方法。3,替换。4,查找。 1,将正则规则通过Pattern类中的static方法complie,封装成Pattern对象, 2,
2011-11-14 01:48:21
1842
1
原创 Scanner简单文本扫描器
Scanner可以根据流和正则表达式来获取数据,它是将流和正则表达式的封装,主要用于操作文本。1.它可以获取文本并解析2.可以在文本中融入正则表达式 /* * 从a.txt文件中获取数据,并以,进行分割 */ public static void getName() throws Exception { Scanner scanner = new Scanner(new
2011-11-13 23:24:00
1865
1
原创 反射技术总结
所有的框架和服务器开发都是用的反射技术,学好反射对日后更深层次的开发是非常重要的。通过反射可以动态的获取类的成员,在不想改动源代码的情况下修改类,这样我们就可以通过反射技术将这个类加载进来。我们在框架用xml文件进行配置的时候,实际上就是获取到类名使用反射动态的加载进来,大大提高了可扩展性,另外再访问私有属性的时候是访问不到的,因为它不可见,如果非要访问的话可以用暴力反射进行访问实例:
2011-11-13 21:58:54
3740
转载 Java常见异常(Runtime Exception )小结
本文重在Java中异常机制的一些概念。写本文的目的在于方便我很长时间后若是忘了这些东西可以通过这篇文章迅速回忆起来。 一. 异常机制 1. 异常机制是指当程序出现错误后,程序如何处理。具体来说,异常机制提供了程序退出的安全通道。当出现错误后,程序执行的流程发生改变,程序的控制权转移到异常处理器。 2. 传统的处理异常的办法是,函数返回一个特殊的结果来表示出现异常(通常这个特殊结果是大家
2011-11-11 14:57:44
1549
原创 面试切忌六个小动作
求职过程中,面试可以说是压力最大的一个环节。要想在面试中成为胜利者,要做好多方面的准备,就连一些不经意的小动作也不能忽略。美国心理学家近日指出,面试时一定要避免六个负面小动作。 边说话边拽衣角。求职者在面谈时,由于紧张或不适应,无意间会拽衣角或摆弄纽扣。这个小动作很容易让考官看出你的紧张焦虑,给人留下不成熟、浮躁的印象。 跷二郎腿或两手交叉于胸前。不停地轮换交叉
2011-11-09 17:42:44
1166
原创 Android-ADB常用命令
1.adb shell :Linux命令行控制台# cd system/bin :查看Linux下的所有命令# ls# ping localhost :检查网络连接2.adb kill-server :结束adb服务3.adb start-server :启动adb服务4.adb devices :列出与adb 服务相连的手机5.adb -s emulator
2011-11-08 15:28:21
2604
原创 Android中Tween动画和Frame动画实例
Animation主要有两种动画模式:Tween动画和Frame动画Tween动画由四种类型组成alpha渐变透明度动画效果scale渐变尺寸伸缩动画效果translate画面转换位置移动动画效果rotate画面转移旋转动画效果res目录下新建
2011-11-07 18:35:01
3596
2
转载 一个程序员的十年程序人生感悟
展望未来,总结过去10年的程序员生涯,给程序员小弟弟小妹妹们的一些总结性忠告走过的路,回忆起来是那么曲折,把自己的一些心得体会分享给程序员兄弟姐妹们,虽然时代在变化,但是很可能你也会走我已经做过的10年的路程,有些心得体会你可以借鉴一下,觉得说得有道理的你就接纳,觉得说得没道理的,你就抛弃,以下是我发自内心的,给大家的忠告,特别是针对那些小弟弟妹妹们。01. 自己的户口档案、养老保险、
2011-11-03 19:44:50
1598
2
原创 Android实现任务管理器
任务管理器可以实现的功能有:1.查看当前系统下运行的所有的进程2.可以查看每个进程的进程号、版本号以及内存占用情况3.杀死进程(可以杀死全部进程或者杀死指定的进程)4.查看系统剩余内存效果图:
2011-11-03 18:31:00
10859
7
原创 Android之世面上程序锁的实现
当我们为程序设置密码后,当我们第一次进入该程序时就会提示我们输入密码,输入正确密码后就可以继续访问该程序,如果再次访问该程序就不会提示我们输入密码,这就是市面上常见程序锁的实现。开发思路:1. 开启服务,在服务中开启一个死循环,这个死循环用来检测当前访问的程序是不是被加锁的程序,如果是则弹出输入密码对话框。这里采用数据库来保存被加锁的程序。2. 密码被保存在xml 中,如果匹配密码后则
2011-11-01 23:26:52
14763
4
原创 Struts2基于XML配置方式实现对Action方法进行校验
使用XML对Action方法进行校验方式有两种,一种是对Action的所有方法进行校验,另一种是对Action指定方法进行校验.对Action的所有方法进行校验:步骤:1.创建Action需要继承ActionSupport2.提供校验的xml文件,该文件和action放在同一个包下校验文件的取名格式为:PersonAction-validation.xml,其中PersonAc
2011-10-31 16:51:15
5403
原创 Struts2实现自定义转换器和全局类型转换器
在action中有个字段是birthday是date类型,当我们传值时必须写成1999-01-01它才会自动类型转换,但在有些时候有这样的需求要写成19990101这样默认就不会进行自动类型转换,这样我们可以写一个自定义类型转换器,实现转换需求。Struts2有两种类型转换器:局部:对某个action转换类型起作用首先要自定义类型转换器:public class DateTypeC
2011-10-31 15:32:30
6658
原创 Struts2实现同时多文件上传
步骤:第一步:再WEB-INF/lib下加入commons-fileupload-1.2.1.jar、commns-io-1.32.2.jar第二步: 文件1: 文件2: 文件3: 注意:enctype="multipart/form-data" method="post"为固定值第三步:public class
2011-10-31 01:59:26
1852
1
转载 Android中Handler作用
在Android的UI开发中,我们经常会使用Handler来控制主UI程序的界面变化。有关Handler的作用,我们总结为:与其他线程协同工作,接收其他线程的消息并通过接收到的消息更新主UI线程的内容。我们假设在一个UI界面上面,有一个按钮,当点击这个按钮的时候,会进行网络连接,并把网络上的一个字符串拿下来显示到界面上的一个 TextView上面,这时就出现了一个问题,如果这个网络连接的延
2011-10-29 23:24:25
12826
1
原创 Android杀毒实现原理及实例
一个杀毒软甲最核心的部分一个是病毒库一个是杀毒引擎,病毒库从服务器中获得,杀毒引擎实际上是判断程序中的包名和签名是否匹配病毒库中的包名和签名,如果匹配则为病毒,界面使用帧动画来显示。 思路:1.从服务器端把病毒的版本库信息下载下来将解析的数据存放到List集合中2.获取到手机中所有应用程序的包名以及程序的签名3.将病毒库匹配手机应用程序包名及签名4.用ScrollView标
2011-10-28 23:17:51
12815
16
原创 Android自定义Notification
Notification是一种让你的应用程序在不使用Activity的情况下警示用户,Notification是看不见的程序组件警示用户有需要注意的事件发生的最好途径。作为UI部分,Notification对移动设备来说是最适合不过的了。用户可能随时都带着手机在身边。一般来说,用户会在后台打开几个程序,但不会注意它们。在这样的情形下,当发生需要注意的事件时,能够通知用户是很重要的。No
2011-10-24 13:28:36
16301
原创 手机防盗之获取手机经纬度
获取手机经纬度有 gps , network , 基站 三种方式,我们可以根据定位的条件,获取一个最好的定位方式。然后将获取到经纬度信息发送到指定的手机号码中。/* * 单态只允许存在一个实例. * 获取手机的gps信息 */public class GPSInfoService { private Context context; private LocationManage
2011-10-23 00:55:15
4755
4
原创 Android获取系统隐藏服务实现锁屏
实现原理:当按锁屏键时,会发出一个广播,当界面接收到一个广播就可以实现锁频。我们可以调用IDevicePolicyManager服务中的lockNow方法来发送一个广播实现锁屏。IDevicePolicyManager是被系统隐藏掉的,需要通过反射还获取此服务。 步骤:1.创建MyAdmin的广播接收者继承DeviceAdminReceiver2.通过反射 ,获取IDevicePo
2011-10-21 11:46:39
8521
5
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人