- 浏览: 132445 次
- 性别:
- 来自: 鄂州
最新评论
-
xingfuyizhan:
写的很好,谢谢分享
方便实用的下拉刷新控件,支持ScrollView、AbsListView -
xingfuyizhan:
在Fragment中使用布局怎么显示不出来
方便实用的下拉刷新控件,支持ScrollView、AbsListView -
飞不过海:
Mybeautiful 写道显然有问题,return Bitm ...
Android根据指定的尺寸加载Bitmap -
Mybeautiful:
显然有问题,return BitmapFactory.deco ...
Android根据指定的尺寸加载Bitmap -
xhAndroid:
加入我工程的时候有个诡异的bug,下拉刷新布局就会覆盖主Vie ...
方便实用的下拉刷新控件,支持ScrollView、AbsListView
文章列表
百度坐标与GPS坐标转换
- 博客分类:
- android开发
官网这么说的
4.3 百度坐标为何有偏移?
国际经纬度坐标标准为WGS-84,国内必须至少使用国测局制定的GCJ-02,对地理位置进行首次加密。百度坐标在此基础上,进行了BD-09二次加密措施,更加保护了个人隐私。百度对外接口的坐标系并不是GPS采集的真实经纬度,需要通过坐标转换接口进行转换。
百度地图API中,有GPS坐标转百度坐标的功能 http://developer.baidu.com/map/wiki/index.php?title=androidsdk/guide/tool这个转换算法百度是不会公开的,而且百度也没有提供百度坐标转成GPS坐标功能,这里我用了取巧的办 ...
最近项目更换了新的设计,实现了左右滑动、下拉刷新的功能,因此把这部分代码抽离出来作为DEMO。
附上两张图:
关键技术:
1.左右滑动。这个比较简单,使用ViewPager,子界面使用FragmentPagerAdapter
2.下拉刷新。使用精简的开源项目pulltorefresh
3.导航滚动。使用HorizontalScrollView实现。
工程源码见附件。
Android图片压缩
- 博客分类:
- android开发
比较简单,直接上代码
public static Bitmap compressImage(Bitmap bitmap) {
if (bitmap != null) {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bitmap.compress(CompressFormat.JPEG, 100, baos);
int length = baos.size();
Logger.d("c ...
最近要做一个下拉刷新的功能,网上找了很多例子,也看了一些开源的下拉刷新项目,但是小例子比较简单,效果和稳定性都差强人意,而开源的项目又太庞大,看起来耗时费劲,所以只好综合一下各处的代码掌握其原理,自己实现一套下拉刷新功能。
该控件特点:
1.子控件必须是一个ScrollView或ListView;
2.支持自定义下拉布局;
3.自定义下拉布局可以不用处理下拉的各种状态(只需要实现几个接口即可),也可以自己处理各种下拉的状态。
先来看看效果图:
上代码:
首先看如何使用:
1.使用的布局:
<LinearLayout xmlns:andr ...
因为图片的尺寸千差百异,要想加载不同的图片,又要保证不影响整体布局的美观,我们可以通过计算需要的尺寸来加载图片。
直接上代码:
public static synchronized Bitmap decodeSampledBitmapFromStream(
InputStream in, int reqWidth, int reqHeight) {
// First decode with inJustDecodeBounds=true to check dimensions
final Bi ...
最近的项目需要做一个如同微信中的腾讯新闻的功能,如下图所示:
直接上关键代码:
布局:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_pare ...
Android2.3中Wifi的状态都是在WifiStateTracker中维护的,4.0中将Wifi的状态全部放到WifiStateMachine中维护了。这篇文章不去深究Wifi的问题,只以Wifi为例,来分析层次结构状态机的原理。WifiStateMachine继承于StateMachine,StateMachine是一个层次结构的状态机,它可以处理一些消息,并维护一个层次结构的状态。
先来看看状态是什么?状态很简单,只有自已的名字(如"Connecting"表示当前正在连接Wifi),然后还有一个处理函数processMessage,它接收一个Message参数, ...
Wifi层次结构状态机
- 博客分类:
- android开发,状态机
Android2.3中Wifi的状态都是在WifiStateTracker中维护的,4.0中将Wifi的状态全部放到WifiStateMachine中维护的。今天不是深究Wifi的问题,只以Wifi为例,来分析层次结构状态机的原理。
WifiStateMachine继承于StateMachine,StateMachine是一个层次结构的状态机,它可以处理一些消息,并维护一个层次结构的状态。
先来看看状态是什么?状态很简单,只有自已的名字(如"Connecting"表示当前正在连接Wifi),然后还有一个处理函数processMessage,它接收一个Message参数,顾 ...
最近项目在做一个双模手机,我负责电话框架层的移植,因此把2.3版的电话模块又梳理了一遍。
今天刚好趁等板子的时间(我们项目很穷的,8个人共用一块板子调试,我的个去啊,要知道刷一次机是很麻烦很费时的。)
把前段时间整理的来电上报流程给帖出来,供拍。
框架层的上报流程都是通过通知机制实现的,举个例子:A要监听B的状态,可以在A中实现一个Handler,然后将该Handler注册到B中。即设计模式之观察者模式。
电话部分的通知机制如下图所示:
图画的比较烂,不好意思从小就没学过美术(当年的美术课都被班主任占了)。
所有电话模块model的改变,都会反映到RIL层上,RIL层提供了 ...
Messenger:信使
官方文档解释:它引用了一个Handler对象,以便others能够向它发送消息(使用mMessenger.send(Message msg)方法)。该类允许跨进程间基于Message的通信(即两个进程间可以通过Message进行通信),在服务端使用Handler创建一个Messenger,客户端持有这个Messenger就可以与服务端通信了。
以前我们使用Handler+Message的方式进行通信,都是在同一个进程中,从线程持有一个主线程的Handler对象,并向主线程发送消息。
而Android既然可以使用bindler机制进行跨进行通信,所以我们当然可 ...
Android MediaPlayer
的生命周期
MediaPlayer
的状态转换图也表征了它的生命周期,搞清楚这个图可以帮助我们在使用
MediaPlayer
时考虑情况更周全,写出的代码也更具健壮性。
这张状态转换图清晰的描述 ...
每天进步一点点之AsyncQueryHandler学习
AsyncQueryHandler:异步的查询操作帮助类,其实它同样可以处理增删改
1。AsyncQueryHandler的作用
查询其API便可知,它担供:
startInsert
startDelete
startUpdate
startQuery
这四个操作,并提供相对应的onXXXComplete方法,以供操作完数据库后进行其它的操作,这四个
onXXXComplete方法都是空实现,以便我们只需要去实现我们关注的操作。
2。为什么要使用AsyncQueryHandler
当然你也 ...
需求:
Android自带的TabHost为橫向的,而且样式已经写死了,不能改变。
而我需要做一个纵向(垂直)的TabHost界面,达到如下效果:
使劲想套用API的TabHost,但是它里面的TabWidget的方向写死的,请看:
private void initTabWidget() {
setOrientation(LinearLayout.HORIZONTAL);
只好自已重写一个TabHost布局,代码如下:
package com.xwangly.tabhost;
import java.util.ArrayList; ...
打电话请求流程
1.进入键盘界面(TwelvekeyDialer),点击dialButton发送ACTION_CALL_PRIVILEGED动作来启动OutgoingCallBroadcaster.
2.OutgoingCallBroadcaster对紧急号码进行处理后发ACTION_NEW_OUTGOING_CALL广播,由内部类OutgoingCallReceiver接收,由该类来启动InCallScreen。
3.InCallScreen的onCreate中调用initInCallScreen初始化打电话界面,registerForPhoneStates注册电话状态监听,由内部Handle ...
去电流程:
广播:action="android.intent.action.CALL"
OutgoingCallBroadcaster.java接收,该类中先判断是否是紧急号码,是紧急号码则直接启动com.android.contacts.DialtactsActivity,并结束自己。
调用PhoneApp的wakeUpScreen唤醒屏幕
普通电话,则发送广播,由类部类OutgoingCallReceiver接收,该类启动InCallScreen转到通话界面
InCallScreen中的initInCallScreen初始化屏幕,然后registerForPhoneS ...