android总结第一篇

先来看看效果图:




第一天:学习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;
	}


	
}






评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值