android总结第一篇
来源:互联网 发布:声优聊天软件 编辑:程序博客网 时间:2024/05/01 19:02
先来看看效果图:
第一天:学习android的历史,以及收发短信
发送短信以及打电话的过程中,我们要注意给权限SEND_SMS CALL_PHONE
同时有四种方法去监听按钮最好的最常用的一种是直接
第一步:实现接口
implements OnClickListener
第二步:按钮监听
Button but_add_data=(Button) findViewById(R.id.but_add_data);
but_add_data.setOnClickListener(this);
第三步:实现onclick方法
第二天:主要学习五大布局,数据存储,如文件存储,sharePres,XML用PULL解析
(1)
五大布局中常用到的就是:相对布局,线性布局,帧布局
文字居中用gravity,按钮居中用layout_gravity
线性布局中有一个权值的weight的问题
如下:
<a weightSum=3>
<b weight=1>
</b>
<c>
</c>
</a>
那么b就会占1/3,其余的给别人,b只参考他的父元素
如果:父节点没有指名weight,b就是剩余的空间都是他的
<a>
<b weight=1>
</b>
<c>
</c>
</a>
(2)
数据存储,文件处理
A:第一种直接存储于我们的/data/data/包名/文件名.xxx下,或者/data/data/包名/cache/文件名.xxx,/data/data/包名/files/文件名.xxx
下面都是为了说明怎样写入这些文件路径而总结的。
上面的三种都不要权限,因为这没有涉及到SD卡。
为了程序更健壮,对于第一种,我们不应该直接写包名:这样可以得到包名this.getPackageName()
对于第二种就更加简单了/data/data/包名/cache/文件名.xxx,直接用getCacheDir(),如果我们想要写到缓存中,我们应该
自己构造一下:String path=getCacheDir()+"/"+"file.xxx" 或者 File f=new File(getCacheDir(),"filename.xxx");
Activity还提供了getCacheDir()和getFilesDir()方法:
getCacheDir()方法用于获取/data/data/<package name>/cache目录
getFilesDir()方法用于获取/data/data/<package name>/files目录
如果我们想写到/data/data/包名/files/文件名.xxx,直接用下面代码
FileOutputStream outStream = this.openFileOutput("file.xxx", Context.MODE_PRIVATE);
outStream.write("asas".getBytes());
outStream.close();
openFileOutput()方法的第一参数用于指定文件名称,不能包含路径分隔符“/” ,
如果文件不存在,Android会自动创建它。创建的文件保存在/data/data/<package name>/files目录
B:写入SD,首先我们要去设定权限
// 挂载和卸载SDCard
android.permission.MOUNT_UNMOUNT_FILESYSTEMS
// 写入外存储设备权限
android.permission.WRITE_EXTERNAL_STORAGE
if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
File sdCardDir = Environment.getExternalStorageDirectory();//获取SDCard目录
File saveFile = new File(sdCardDir, “itcast.txt”);
FileOutputStream outStream = new FileOutputStream(saveFile);
outStream.write("传智播客".getBytes());
outStream.close();
}
(3)
XML的解析与存储
解析不多说,就是用下面的一个自己写的文件工具类
package com.ouyang.studentmanage.util;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.util.ArrayList;import java.util.List;import org.xmlpull.v1.XmlPullParser;import org.xmlpull.v1.XmlSerializer;import android.content.Context;import android.os.Environment;import android.util.Log;import android.util.Xml;import com.ouyang.studentmanage.domain.Student;/** * 工具类 * @author Administrator * */public class FileUtils { static String encode="utf-8"; /** * 保存数据 * @param context 上下文,由他得到包名 * @param stu_list 学生列表 * @throws IOException */public static void save(Context context, List<Student> stu_list) throws IOException { //SD卡是否能用String state=Environment.getExternalStorageState();if(Environment.MEDIA_MOUNTED.equals(state)){ //这个path在我们应用包下的,不需要权限String path="/data/data/"+context.getPackageName()+"/stu_list.xml";////这个File是写入SD卡中的,需要权限//File f=Environment.getExternalStorageDirectory();//File file=new File(f,"stu_list.xml");//Log.i("Tag",file.getAbsolutePath());XmlSerializer serializer=Xml.newSerializer();FileOutputStream os=new FileOutputStream(path);serializer.setOutput(os, encode);serializer.startDocument(encode,true);serializer.startTag(null,"students");if(stu_list.size()>0){for(int i=0;i<stu_list.size();i++){String stu_name=stu_list.get(i).getStu_name();String stu_age=stu_list.get(i).getStu_age();String stu_sex=stu_list.get(i).getStu_sex();serializer.startTag(null,"student");serializer.attribute(null,"id",String.valueOf(i));serializer.startTag(null,"name");serializer.text(stu_name);serializer.endTag(null,"name");serializer.startTag(null,"age");serializer.text(stu_age);serializer.endTag(null,"age");serializer.startTag(null,"sex");serializer.text(stu_age);serializer.endTag(null,"sex");serializer.endTag(null,"student");} }serializer.endTag(null,"students");serializer.endDocument();}}/** * 解析学生 * @param context 上下文 * @return * @throws Exception 异常抛出 */public static List<Student> recover(Context context) throws Exception { List<Student> stu_list=new ArrayList<Student>();String path="/data/data/"+context.getPackageName()+"/stu_list.xml";System.out.println(path);XmlPullParser parser=Xml.newPullParser();FileInputStream is=new FileInputStream(path);parser.setInput(is, encode);int enentType=parser.getEventType();Student stu=null;while(enentType!=XmlPullParser.END_DOCUMENT){String tagname=parser.getName(); switch(enentType) { case XmlPullParser.START_TAG: if("student".equals(tagname)) { stu=new Student(); String id = parser.getAttributeValue(null,"id"); stu.setId(Integer.valueOf(id)); }else if("name".equals(tagname)) { if(stu!=null) { stu.setStu_name(parser.nextText()); } }else if("age".equals(tagname)) { if(stu!=null) { stu.setStu_age(parser.nextText()); } }else if("sex".equals(tagname)) { if(stu!=null) { stu.setStu_sex(parser.nextText()); } } break; case XmlPullParser.END_TAG: if("student".equals(tagname)) { stu_list.add(stu); } break; } enentType=parser.next(); } return stu_list;}}
0 0
- android总结第一篇
- Android wakelock 学习总结第一篇
- 转载Android wakelock 学习总结第一篇
- Android wakelock 学习总结第一篇
- 第一篇:android常用dialog总结
- Android BLE开发总结第一篇
- 总结之第一篇
- 学习总结第一篇
- 前端第一篇总结
- Android入门第一篇
- Android入门第一篇
- Android入门第一篇
- Android入门第一篇
- android 学习第一篇
- 学习android第一篇
- android 应该第一篇
- android第一篇
- Android入门第一篇
- ParallelExtensionsExtras-master
- 网络编程之路---8
- JAVA中int、String的类型转换
- Gentoo 安装笔记 -- 2014/2/23
- AndroidManifest.xml文件详解
- android总结第一篇
- Android ADB server didn't ACK * failed to start daemon * 简单有效的解决方案
- 网络基础之一OSI七层模型篇(网络故障排错)
- PHP读取access 数据库的部分方法实例
- 编译平常小错误
- Unity3D的脚本-script入门
- 一个工科研究生的职业规划
- 通过show status 来优化MySQL数据库
- MT6572M rgb屏的破解方式