1、第三方登录
安卓微信登录:用IWXAPI注册,微信OAuth2.0的SendAuth发送数据,
微信客户端回调WXEntryActivity,onResp方法设置响应
新浪微博登录:AuthInfo注册,implements WeiboAuthListener的类
QQ登录:Tencent类
2、群聊
使用openfire服务器,基于XMPP协议和Smack客户端类库
用ConnectionConfiguration配置一些信息,比如服务器地址端口名字等。
用XMPPConnection包含这些配置信息传进用户名密码和房间标识开始连接。
群聊的话首先要加入房间,用DiscussionHistory设置要取出的时间内的聊天信息,在MultiUserChat加入房间,
然后用PacketListener注册房间监听,读取Packet里的信息显示出来,
发送消息用curmultchat.createMessage设置信息内容,用xmppConnection.sendPacket发送这个消息,
退出的时候回收监听器退出房间,然后关闭连接。
单聊ChatManagerListener注册监听,用chatManager发送消息,不用加入房间的区别
3、版本更新
从服务器获得版本号和本地比对,如果大于当前版本则升级。
用DownloadManager类设置网络的连接方式等配置信息。
然后使用MimeTypeMap配置连接的路径,是否通知栏显示,下载文件的保存路径,标题等信息,
之后注册个广播和IntentFilter一起监听是否下载完成。如果下载完成使用Intent设置flag和文件路径开始安装
4、读取本地图片转为Bitmap,也是分辨率减少方法,防止OOM
使用BitmapFactory工厂,用options类配置一些参数,里面主要属性是inSampleSize的值要恰当,专门有算法可以算出,防止oom
然后用BitmapFactory的decodeFile方法返回bitmap
5、图片上传
在子线程里,使用HttpURLConnection建立连接,set设置一些超时,输入输出流是否允许,请求方法,编码等信息
使用DataOutputStream存入一些文件名等的信息,之后用InputStream读文件流,写入输出流,
如果响应代码返回200为建立传入成功,读取连接输入流InputStream,放入StringBuffer内,传给handle返回结果
6、图片下载
HttpURLConnection建立连接,url打开连接,设置超时时间和请求方法,当响应码为200时,读取输入流,建立文件流,写入数据,关闭流
7、图片质量压缩
图片压缩有质量压缩和按照图片比例压缩,质量压缩,建立ByteArrayOutputStream,使用bitmap的compress方法压缩,
如果压缩后图片大于某个值,清空输入流reset,再次压缩,最后建立输入流,使用BitmapFactory的decodeStream方法生成bitmap
8、打开相机照片和本机相册选择图片
使用intent的MediaStore
相对布局视图在底部,背景白色。相机调用intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, uri);
相册的话调用 intent.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, "image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);在onActivityResult回调得到结果url
通过Uri获取Bitmap对象
one = MediaStore.Images.Media.getBitmap(this.getContentResolver(), photoUri);
9、图片缩小放大单击退出功能描述
自定义View,重写onTouchEvent、onLayout、onDraw方法,在onDraw方法初始化时候得到bitmap的高宽跟屏幕对比,算出缩放比例,
记录当前图片高宽,然后根据状态标识来绘图,状态标示来自onTouchEvent里面,分多点触摸和单点触摸,
多点触摸时候记录上次两指见的距离,大于是放大状态,小于是缩小状态,同时记录缩放比例,调用invalidate重绘
10、屏幕适配
屏幕尺寸指屏幕的对角线的长度,单位是英寸,1英寸=2.54厘米
屏幕分辨率是指在横纵向上的像素点数,单位是px
屏幕像素密度是指每英寸上的像素点数,单位是dpi
解决方法:
1、使用wrap_content和match_parent,再结合上权重,控制某些视图组件的宽度和高度
2、使用 RelativeLayout
3、使用自动拉伸位图。9图
4、使用sp单位指定字体尺寸
5、分辨率可以以1280*720或者是1960*1080作为主要分辨率进行设计
http://blog.csdn.net/jdsjlzx/article/details/45891551 屏幕适配全攻略(最权威的官方适配指导)