- 博客(28)
- 收藏
- 关注
转载 使用SharedPreferences进行数据存储
很多时候我们开发的软件需要向用户提供软件参数设置功能,例如我们常用的QQ,用户可以设置是否允许陌生人添加自己为好友。对于软件配置参数的保存,如果是window软件通常我们会采用ini文件进行保存,如果是j2se应用,我们会采用properties属性文件或者xml进行保存。如果是Android应用,我们最适合采用什么方式保存软件配置参数呢?Android平台给我们提供了一个SharedPrefer
2015-09-18 15:35:19
289
原创 TypedArray 与 常量数组一起使用
1. 在attrs.xml中定义ContextMenuPopupWindowAttr以及其属性和类型,即(R.styleable.ContextMenuPopupWindowAttr):attrs.xml: 2. 在java类中使用TypedArray: TypedArray arr
2015-09-15 21:13:52
469
原创 android post和get请求 && 子线程获取UI线程的值
重点:子线程获取UI值,但是不能修改。在下面的例子中,子线程获取UI在UI线程中输入的用户名密码。 Android应用经常会和服务器端交互,这就需要手机客户端发送网络请求,下面介绍常用的两种网络请求方式POST,GET。首先要区别POST和GET请求1. GET是从服务器上获取数据,POST是向服务器传送数据。2. GET是把参数数据队列加到提交表单的ACTION属
2015-09-15 16:23:07
1426
原创 git 命令总结
git statusgit branchgit add .git commit -asgit status git loggit commit --amendgit branchgit branch bak-0720cp ./pad_src_v2/miui/browser/support/app/AbsWebTabActivity.java ~/cp ./p
2015-09-08 10:53:01
346
转载 Android UI系列-----ScrollView和HorizontalScrollView
本篇随笔将讲解一下Android当中比较常用的两个布局容器--ScrollView和HorizontalScrollView,从字面意义上来看也是非常的简单的,ScrollView就是一个可以滚动的View,这个滚动的方向是垂直方向的,而HorizontalScrollView则是一个水平方向的可以滚动的View。本篇随笔可能描述性的知识比较少,最主要还是通过代码来看看如何使用这两个View。
2015-09-08 10:33:10
258
原创 GridView完美的例子
1.主界面布局代码:activity_main.xmla.包裹HorizontalScrollView控件是GirdView横向滚动的基本条件b.GirdView外包裹LinearLayout是java代码中参数设置的必要条件 android:layout_width="fill_parent" android:layout_height="fill_pare
2015-09-08 10:09:00
330
原创 动画AnimatorSet
ValueAnimator:这个类提供了一个简单的计时引擎运行动画动画计算值和设置目标对象。注意:使用该类时一般都是用:ObjectAnimator,而基于ObjectAnimator执行的属性动画,都是根据java的反射机制来设置的。如下,定义三个动画:1. 设置Y轴的活动范围;int startY = mPortraitCustomMenuHeight;int
2015-08-24 20:07:20
326
原创 android布局 —— LinearLayout
android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" > android:id="@+id/message" android:layout_width="0dp"
2015-08-14 21:44:15
287
原创 Android入门第十六篇之Style与Theme
越来越多互联网企业都在Android平台上部署其客户端,为了提升用户体验,这些客户端都做得布局合理而且美观.......Android的Style设计就是提升用户体验的关键之一。Android上的Style分为了两个方面:Theme是针对窗体级别的,改变窗体样式;Style是针对窗体元素级别的,改变指定控件或者Layout的样式.Android系统的themes.xml
2015-08-12 20:23:37
284
原创 HandlerThread的使用
在android开发中,一说起线程的使用,很多人马上想到new Thread(){...}.start()这种方式。这样使用当然可以,但是多次使用这种方式,会创建多个匿名线程。使得程序运行起来越来越慢。因此,可以考虑使用一个Handler来启动一个线程,当该线程不再使用就删除,保证线程不会重复创建。一般会使用Handler handler = new Handler(){.
2015-08-07 10:39:28
434
原创 使用Thread+Handler实现非UI线程更新UI界面
概述:每个Android应用程序都运行在一个dalvik虚拟机进程中,进程开始的时候会启动一个主线程(MainThread),主线程负责处理和ui相关的事件,因此主线程通常又叫UI线程。而由于Android采用UI单线程模型,所以只能在主线程中对UI元素进行操作。如果在非UI线程直接对UI进行了操作,则会报错:CalledFromWrongThreadException:only
2015-08-06 16:14:19
440
原创 Android计算字符串显示宽度
mFileNameHint = (TextView) view.findViewById(R.id.file_name_hint); CharSequence text = mFileNameHint.getText(); int width =(int) Layout.getDesiredWidth(text, 0, text.length(), mFileNameHint.
2015-08-05 11:07:58
525
原创 EditText 文本域改变事件监听
mFileNameEt = (EditText) view.findViewById(R.id.fileNameEt); mFileNameEt.setText(fileName); mFileNameEt.setSelectAllOnFocus(true); mFileNameEt.setOnFocusChangeListener(new View.O
2015-08-05 10:56:29
384
原创 webView使用细节
A. webview组件如何使用1) 添加权限:AndroidManifest.xml中必须使用许可"android.permission.INTERNET",否则会出Web page not available错误。2) 在要Activity中生成一个WebView组件:WebView webView = new WebView(this);或者可以在activity的
2015-07-30 21:30:52
413
原创 BaseAdapter使用
一:在ListView里面添加viewListView.setAdapter(new LabelAdapter());private String tvlist[] =new String[]{"精彩推荐","新闻咨询","美食旅行","生活购物","美图搞笑","社交交友"};class LabelAdapter extends BaseAdapter{
2015-07-29 14:34:08
212
原创 TypedArray的用法
自定义view的属性方式如下::::1. 在res/values 文件下定义一个attrs.xml 文件. 2. viewGroup1中自定义viewGroup2的大小在viewGroup1中代码如下: //使用“名字_属性"的方法获取int mWindowHeight = (int
2015-07-29 11:08:32
292
原创 Android中自定义View的MeasureSpec使用
一般来说,自定义控件都会去重写View的onMeasure方法,因为该方法指定该控件在屏幕上的大小。protected void onMeasure (int widthMeasureSpec, int heightMeasureSpec)onMeasure传入的两个参数是由上一层控件传入的大小,有多种情况,重写该方法时需要对计算控件的实际大小,然后调用setMeasuredDimensi
2015-07-29 11:00:35
297
原创 ViewGroup 的 "生命周期"
1. 先调用onMeasure设定组件大小,2.调用onLayout设置组件显示的范围 3.开始绘制viewGroupviewGroup在绘制的时候添加其他ViewGroup,因此,可以在onLayout中设置添加其他ViewGroup的动画。
2015-07-29 10:56:44
288
1
原创 Activity里添加ViewGroup ViewGroup里添加ViewGroup
举例:Activity里面添加ViewGroup1. browserActivity extends Activity2. desktopLayout extends ViewGroup第一种方法: browserActivity原本的布局:setContentView(R.layout.activity_main);当点击某按钮后,添加一个新的布局,如下所示,布局变为
2015-07-28 20:29:02
932
原创 程序无响应原因
在Android中,应用的响应性被活动管理器(Activity Manager)和窗口管理器(Window Manager)这两个系统服务所监视。当用户触发了输入事件(如键盘输入,点击按钮等), 如果应用5秒内没有响应用户的输入事件,那么,Android会认为该应用无响应,便弹出ANR(Application No Response)对话框。如右图。在正常情况下
2015-07-27 21:24:16
602
原创 onConfigurationChanged
默认情况下,当“屏幕方向”或“键盘显示隐藏” 变化时都会销毁当前Activity,创建新的Activity。如果不希望重新创建Activity实例,可以按如下配置Activity:上面的android:configChanges属性指定了要捕获“屏幕方向”和“键盘显示隐藏”变化,当捕获到这些变化后会调用Activity的onConfigurationChanged()方法。
2015-07-27 21:20:19
348
原创 android----通信录操作
使用ContentResolver对通信录中的数据进行添加、删除、修改和查询操作:加入读写联系人信息的权限、加入读取联系人信息的权限content://com.android.contacts/contacts 操作的数据是联系人信息Uricontent://com.android.contacts/data/phones 联系人电话Uricontent:/
2015-07-27 20:35:55
307
原创 ContentObserver——窃听用户发出的短信
用户使用系统自带的短信程序发送短信,程序会通过ContentProvider把短信保存进数据库,并且发出一个数据变化通知,使用ContentObserver对数据变化进行监听,在用户发送短信时,就会被ContentObserver窃听到短信:注册监听:getContentResolver().registerContentObserver(Uri.parse("content://sms"
2015-07-27 20:27:08
481
原创 监听ContentProvider中数据的变化
如果ContentProvider的访问者需要知道ContentProvider中的数据发生变化,可以在ContentProvider 发生数据变化时调用getContentResolver().notifyChange(uri, null)来通知注册在此URI上的访问者,例子如下:public class PersonContentProvider extends ContentProvid
2015-07-27 20:17:59
698
转载 URI+ContentProvider+ContenResolver
Uri介绍Uri代表了要操作的数据,Uri主要包含了两部分信息:1》需要操作的ContentProvider ,2》对ContentProvider中的什么数据进行操作,一个Uri由以下几部分组成:ContentProvider(内容提供者)的scheme已经由Android所规定, scheme为:content://主机名(或叫Authority)用于唯一标识这个Con
2015-07-27 20:01:08
279
转载 Android中内容观察者的使用---- ContentObserver类详解
前言: 工作中,需要开启一个线程大量的查询某个数据库值发送了变化,导致的开销很大,后来在老大的指点下,利用了 ContentObserver完美的解决了该问题,感到很兴奋,做完之后自己也对ContentObserver做下总结。 ContentObserver——内容观察者,目的是观察(捕捉)特定Uri引起的数据库的变化,继而做一些相应的处理,它类似于 数据库技术中
2015-07-23 21:50:43
227
原创 handler与handlerThread的区别
1.Handler在android里负责发送和处理消息。它的主要用途有: 1)按计划发送消息或执行某个Runnanble(使用POST方法); 2)从其他线程中发送来的消息放入消息队列中,避免线程冲突(常见于更新UI线程)Handler mHandler = new Handler();mHandler.post(new Runnable(){public void r
2015-07-23 21:04:55
487
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人