1.图片上传时保证清晰度:
https://github.com/android-cn/android-discuss/issues/285
压缩图片算法:一、拍照的图一般是png格式,转换为jpg的。
二、压缩jpg图片。原先4000k+的图片,可以压缩到80k左右,显示效果基本没有影响。原理类似把临近像素点集合成一个。
或者用不到什么高大上的算法,根据个人经验,就像@wangqiankun 所写的:
1.缩小图片尺寸,720px的图片就够大了;
2.图片格式保存成jpg,Bitmap.compress的时候,质量比参数设成80,甚至更小都可以;
2.关于APP登录过程数据安全:
标准做法是不存储密码及密码的加密形式;而是保存token,这个需要服务器支持OAuth 2.0协议。
https协议(不全部支持),MD5加密数据。
3.一个Demo学会用Android兼容包新控件:
http://sunjiajia.com/2015/07/02/android-new-widgets-demo/?plg_nld=1&plg_uin=1&plg_auth=1&plg_nld=1&plg_usr=1&plg_vkey=1&plg_dev=1
4.关于自适应:
AutoLayout for Android
https://github.com/DTHeaven/AutoLayout-Android
5.ListView中item的view种类很多,怎么处理?
例子:Android ListView实现类似朋友圈的复杂布局,多种类型的布局组合在一起。动态为Feed类,被拆分为HeadEntry,BodyEntry,ImageEntry,BottomEntry等这几个Entry都继承BaseEntry,然后BaseAdapter里面List为List。由于Adapter可以使用多种布局,所以这里采用的方式是将单个信息 的布局拆分为多个ListView的item来达到优化的目的。
http://blog.csdn.net/nightyk/article/details/45057777
6.进程与线程:
http://hukai.me/android-notes-process-and-thread/
7.app版本升级是如何做的?
一。1.服务器提供更新接口 getNewVersion()返回JSON {"url":"http://.../**.apk","versionCode":"2","versionName":"2.0", "md5","1234...1234"}
2.客户端 获取 mVersionCode = 1 < 2 , 有新版本。
3.通过URL下载apk到本地。
4.获取apk完整性,md5比较。
5.进行升级安装。
二:仅通过商店更新
三:如果项目用到了友盟的SDK,直接用友盟还是挺方便的,不过友盟提供的更新UI很难看!但可以自定义
8.手势
按下(onDown): 刚刚手指接触到触摸屏的那一刹那,就是触的那一下。
抛掷(onFling): 手指在触摸屏上迅速移动,并松开的动作。
长按(onLongPress): 手指按在持续一段时间,并且没有松开。
滚动(onScroll): 手指在触摸屏上滑动。
按住(onShowPress): 手指按在触摸屏上,它的时间范围在按下起效,在长按之前。
抬起(onSingleTapUp):手指离开触摸屏的那一刹那。
任何手势动作都会先执行一次按下(onDown)动作。
长按(onLongPress)动作前一定会执行一次按住(onShowPress)动作。
按住(onShowPress)动作和按下(onDown)动作之后都会执行一次抬起(onSingleTapUp)动作。
长按(onLongPress)、滚动(onScroll)和抛掷(onFling)动作之后都不会执行抬起(onSingleTapUp)动作。
9.自定义控件
自定义控件:measure;draw;layout
1.继承我们的View或者是View的子类
2.初始化画笔Paint
3.重写onDraw画出界面
4.响应用户的触摸事件
自定义控件:
1.继承系统的控件(View),然后去修改
2.用系统提供的几个控件组合形成新的效果
10.scrollView里面有顶部图片,和gridView,如果出现顶部图片显示不全的情况,可能因为两部分争焦点,设置焦点不在gridView上就可以了。
11.时间的格式
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String t = format.format(new Date(time));
return t;
12.<!-- 拨打电话的权限 -->
<uses-permission android:name="android.permission.CALL_PHONE" />
呼叫指定的电话号码。
Intent intent=new Intent();
intent.setAction(Intent.ACTION_CALL);
intent.setData(Uri.parse("tel:10086");
startActivity(intent);
调用拨号面板
Intent intent=new Intent();
intent.setAction(Intent.ACTION_DIAL);
intent.setData(Uri.parse("tel:10086");
startActivity(intent);
13.调手机通讯录
<!-- 获取手机通讯录的权限 -->
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.WRITE_CONTACTS" />
Intent intent = new Intent();
intent.setAction(Intent.ACTION_PICK);
intent.setType("vnd.android.cursor.dir/phone");
// intent.setAction(Intent.ACTION_GET_CONTENT);
// 设置Intent Type属性,主要是获取通讯录的内容
// intent.setType("vnd.android.cursor.item/phone");
startActivity(intent);
转载请注明原文地址: https://ju.6miu.com/read-678070.html