一些杂乱的知识点(一)
来源:互联网 发布:洛氏结构源码 编辑:程序博客网 时间:2024/04/29 13:51
一些杂乱的知识点(一)
- 一些杂乱的知识点一
- Android下配置环境变量类似于电脑上的cmd命令
- ListView
- LinearLayout布局
- Android使用图片
- 常见包名
- 单位
- 工具类
- 耗时操作
- 线程
- Json数据解析
- 手机访问电脑上的服务器中的内容
- SmartImageView
- 自定义控件
- 网络
- 小技巧
- 发送短信
- 样式和主题 style和Theme
- 1 共同点
- 2 不同点
- 3使用
- 国际化 i18n
- 2种上下文的区别
- 对话框
- 1 普通对话框用的比较多
- 2 单选对话框用的少
- 3 多选对话框用的少
- 4 进度条对话框
- Android动画
- 1 属性动画
- 1 补间动画
- 1 帧动画
- 进程概念介绍
- 1 Foreground process 前台进程
- 2 Visible process 可视进程
- 3 Service process 服务进程
- 4 Background process 后台进程
- 5 Empty process 空进程
- 获取SD卡路径
- 引进类库
- 判断横竖屏
1.Android下配置环境变量(类似于电脑上的cmd命令)
需要把执行的文件放在system/xbin目录下,比如把sqlite3放在这下面,在 adb shell下面,直接输入sqlite3直接可以运行.adb shell下面输入su可以提高到root权限也是这个道理.
2.ListView
1.在公司,一般使用BaseAdapter.用一个类去继承这个类. 2.能用fill_parent尽量用fill_parent,用wrap_content的话,它不知道 到底多少个item才能填满屏幕的高度,所以如果当前的getcount返回的个数 不够占满屏幕的高度的话,它会一直调用getview方法去不断地尝试去 填满,getview方法会被调用很多次,效率降低.当使用fill_parent的时候 ,它一开始就知道需要多少个item才能填满屏幕,所以不会去多调用getview方法. 3.创建xml布局时,命名一般是 "item_功能_layout".在布局里面,一个ImageView控件的命名一般是 "item_img_功能" ,可以设置一张默认图片. 4.优化:public View getView(int position, View convertView, ViewGroup parent) { //1.获取position位置条目对应的list集合中的新闻,Bean对象 NewsBean newsBean = list.get(position); View view = null; ViewHolder viewHolder = null; //用来缓存view上的数据 //2.复用convertView优化listview,创建一个view作为getview的返回值用来显示一个条目 if(convertView != null){ view = convertView; viewHolder = (ViewHolder) view.getTag(); //将之前缓存的数据 恢复 } else { //加载布局 view = View.inflate(context, R.layout.item_news_layout, null); viewHolder = new ViewHolder(); //3.获取view上的子控件 存到 viewHolder里面 viewHolder.item_img_icon = (ImageView)view.findViewById(R.id.item_img_icon); viewHolder.item_tv_title = (TextView)view.findViewById(R.id.item_tv_title); viewHolder.item_tv_des = (TextView)view.findViewById(R.id.item_tv_des); view.setTag(viewHolder); //将这个内部类(缓存数据的类)存到view里面 } //4.将数据设置给这些子控件显示 //view子控件的view对象在ViewHolder里面,直接可以设置里面的数据,就等于在设置view里面的子控件的数据 viewHolder.item_img_icon.setImageDrawable(newsBean.news_icon); viewHolder.item_tv_title.setText(newsBean.title); viewHolder.item_tv_des.setText(newsBean.des); return view;}class ViewHolder{ ImageView item_img_icon; TextView item_tv_title; TextView item_tv_des;}
3.LinearLayout布局
1.在使用到weight属性时,如果是vertical布局,则需要把height设置成 0dp,如果是horizontal,则需要把width设置成0dp. 2.gravity:子控件相对于自己居中 layout_gravity:自己相对于父窗体居中 3.android:scaleType="fitXY"拉伸图片,使之占满
4.Android使用图片
1.Bitmap setImageBitmap() 2.Drawable setImageDrawable() context.getResources().getDrawable(R.drawable.icon2);
5.常见包名
1.bean model 一个模型 2.util 工具类 3.adapter 适配器的包 5.dao db 操作数据库的包
6.单位
1.dp 一般的长度单位就用这个 2.sp 字体的大小用这个
7.工具类
1.TextUtils.isEmpty(urlString) 可以判断字符串是否为空
8.耗时操作
1.android耗时的操作(请求网络,大文件的拷贝,数据库的操作)需要在子线程中进行. 2.安卓4.0之后的网络操作强制在子线程中进行.因为网络访问是耗时的操作,可能导致ANR(application not response 应用无响应);
9.线程
1.子线程不能更新UI(某些情况下可以) 2.Toast也算是更新UI,所以不能放在子线程中 3.子线程可以通过handler或者java回调机制发送数据给主线程.其中用 handler方式的时候,Message对象的what可以用来区分是哪个Message对象发送过来的数据.
10.Json数据解析
1.用{}包含的是JsonObject 2.用[]包含的是JsonArray
11.手机访问电脑上的服务器中的内容
1.需要配置局域网,然后让手机连接服务器的地址,且是以ip地址开头,不是以电脑用户名开头.
12.SmartImageView
Android中加载网络图片的ImageView,功能强大,代码简单. 自定义控件的使用时,xml文件中必须写完整路径,比如这里需要写com.loopj.android.image.SmartImageView
13.自定义控件
1.所有的自定义控件,必须实现它的所有的构造方法
14.网络
1.需要开一个子线程去请求网络,一般线程是写到封装这个请求网络的方法里面. 如果需要返回值,则可以使用Handler,或者java的回调机制. 2.判断下载完成:如果一个文件的md5正确了,就下载完成了.
15.小技巧
1.当不知道一个实现的那个方法里面的参数是什么意思时(看api没看懂), 可以在里面加一个Syso输出语句,然后在这一行打一个断点,debug一下,查看函数的参数分别是什么,即可知道参数的意思.
16.发送短信
1.// 获取SmsManager实例 SmsManager smsManager = SmsManager.getDefault(); // 如果短信内容过多 发不出去 分条发送 ArrayList<String> divideMessage = smsManager.divideMessage(content); for (String string : divideMessage) { // 发送短信数据 smsManager.sendTextMessage(number, null, string, null, null); } 2.权限:<uses-permission android:name="android.permission.SEND_SMS"/>
17.样式和主题 style和Theme
17.1 共同点
定义的方式是一样的
17.2 不同点
1.style的作用范围比较窄(控件 button,textview), theme 作用在 activity或者Application节点下.
17.3使用
1.res->values->xxxx.xml 用styles.xml文件或者自己定义的文件来写都行 <style name="my_style"> <item name="android:layout_width">wrap_content</item> <item name="android:layout_height">wrap_content</item> <item name="android:textColor">#ff0000</item> <item name="android:textSize">25sp</item> </style> <style name="my_theme"> <item name="android:animateOnClick">true</item> <item name="android:background">#aa0243</item> </style>
18. 国际化 i18n
国际化就是在res下创建对应国家环境目录,然后更改strings.xml中的值. 然后在运行程序的时候,它会自动的检测当前的系统语言环境去找对应的文件夹下的strings.xml资源.如果不知道那个国家的简写,可以打开IE浏览器,设置->语言,可以看到所有国家的简写. values-en 英文 values-zh 中文
19. 2种上下文的区别
MainActivity.this 是Context的子类getApplicationContext() 直接返回Context对话框不能用getApplicationContext()
20. 对话框
20.1 普通对话框(用的比较多)
// 构建AlertDialog AlertDialog.Builder builder = new Builder(this); builder.setTitle("警告"); builder.setMessage("世界上最遥远的距离是没有网络"); builder.setPositiveButton("确定", new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { System.out.println("点击了确定按钮 执行的逻辑"); } }); builder.setNegativeButton("取消", new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { System.out.println("点击了取消按钮"); } }); // 最后一步一定要记得 show出来 builder.show();
20.2 单选对话框(用的少)
builder.setSingleChoiceItems
20.3 多选对话框(用的少)
builder.setMultiChoiceItems
20.4 进度条对话框
//1.创建一个ProgressDialog对象 与Progress相关的可以在子线程更新UI final ProgressDialog progressDialog = new ProgressDialog(mContext); //2.设置标题 progressDialog.setTitle("玩命儿加载ing"); //3.设置风格,默认的风格是转圈儿 现在设置成水平 progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); new Thread(){ public void run() { for (int i = 0; i <= 100; i++) { SystemClock.sleep(50); //睡眠50毫秒 progressDialog.setProgress(i); //设置进度条的进度 } //关闭对话框 progressDialog.dismiss(); }; }.start(); //开启线程 //4.最后记得show progressDialog.show();
21. Android动画
21.1 属性动画
21.1 补间动画
21.1 帧动画
就是加载一系列的图片资源,照着官方api来弄就行api guides->animation and graphics->drawable animation
22. 进程概念介绍
- Android四大组件都是运行在主线程
- Android中的服务,也是在后台运行 没有界面
- 首先杀死等级低的进程(下面的进程等级由高到低)
22.1 Foreground process 前台进程
用户正在交互,可以理解成 相当于Activity的onResume()方法
22.2 Visible process 可视进程
用户没有在交互,但用户还一直能看得见页面,相当于Activity执行了onPause()方法
22.3 Service process 服务进程
通过startService()开启了一个服务
22.4 Background process 后台进程
当前用户看不见页面,相当于Activity执行了onStop()方法
22.5 Empty process 空进程
23. 获取SD卡路径
- 获取内置SD卡路径
Environment.getExternalStorageDirectory().getPath();
获取外置SD卡路径
public List<String> getExtSDCardPath() { List<String> lResult = new ArrayList<String>(); try { Runtime rt = Runtime.getRuntime(); Process proc = rt.exec("mount"); InputStream is = proc.getInputStream(); InputStreamReader isr = new InputStreamReader(is); BufferedReader br = new BufferedReader(isr); String line; while ((line = br.readLine()) != null) { if (line.contains("extSdCard")) { String [] arr = line.split(" "); String path = arr[1]; File file = new File(path); if (file.isDirectory()) { lResult.add(path); } } } isr.close(); } catch (Exception e) { } return lResult; }
24. 引进类库
比如视频播放开源项目vitamio,是一个类库,那是个Android不能允许的项目,里面有很多源码.当需要在自己的项目中引进时,先把vitamio导入到workspace,需要右键自己的项目属性Android->add library
25. 判断横竖屏
获取屏幕高度,宽度,如果高度>宽度则是竖屏,否则相反.
// 1. 获取手机的宽和高 WindowManager wm = (WindowManager) getSystemService(WINDOW_SERVICE); Point outSize = new Point(); wm.getDefaultDisplay().getSize(outSize); int width = outSize.x; // 宽 int height = outSize.y; // 高
0 0
- 一些杂乱的知识点(一)
- 一些杂乱的知识点(二)
- 一些杂乱的知识点(三)
- 一些杂乱的知识点(未整理)
- 杂乱的知识点
- 一些杂乱的想法
- 一些杂乱的东西
- 读Spring源码的一些杂乱思绪(一)
- 杂乱知识点
- 杂乱知识点
- 杂乱知识点
- 杂乱的网络知识一
- 杂乱的网络知识一
- 工作室的一些规范或杂乱
- MySQL:实践过的一些杂乱记录
- oracle一些杂乱的基础东西!
- 杂乱小知识点总结
- 杂乱知识点记录
- struts+hibernate+oracle+easyui实现lazyout组件的简单案例——DeptDao层代码
- -----hdu4810 Wall Painting
- 227. Basic Calculator II
- Android 运行时权限
- 设计模式之---三种工厂模式
- 一些杂乱的知识点(一)
- java信号量解决生产消费问题
- 一些杂乱的知识点(二)
- struts+hibernate+oracle+easyui实现lazyout组件的简单案例——工具类
- 一些杂乱的知识点(三)
- QT写一个记事本②
- 《跟我一起写Makefile》学习笔记(二)
- Thread interrupt, catch中调用interrupt
- Android中加密算法