一.天气预报应用
1.spinner的应用
citySpinner=(Spinner)findViewById(R.id.citySpinner);
//设置Spinner的适配器来规定其内容及格式 Context Spinner中每一项的布局 数据源,这里是数组
ArrayAdapter<String> adapter=new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item,ConstData.cities);
//设置Spinner的总体布局
adapter.setDropDownViewResource(android.R.layout.simple_dropdown_item_1line);
citySpinner.setAdapter(adapter);
2.解析XML
通过向google发送一个请求,出现一个关于所选城市天气状况的XML,获得,解析并设置
//获得XML文件的内容,属于IO部分 获得对应URL的输入流
InputStreamReader isr=new InputStreamReader(url.openStream(),"GBK");
InputSource is=new InputSource(isr); //这一步是为了后面SAX解析
JAVA基础知识:怎么样把inputStream转换为String
BufferedReader reader = new BufferedReader(new InputStreamReader(url.openStream()));
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null)
sb.append(line + "\n");
System.out.print(sb.toString());
//三步得到XMLReader对象
SAXParserFactory spf=SAXParserFactory.newInstance();
SAXParser sp=spf.newSAXParser();
XMLReader xr=sp.getXMLReader();
//设置xr对象的ContentHandler MyContentHandler继承自DefaultHandler,其中规定了解析对应XML文件的算法
xr.setContentHandler(new MyContentHandler());
xr.parse(is);
//规定XML处理规则的Handler
public class MyContentHandler extends DefaultHandler{
public void startElement(String uri, String localName, String qName,Attributes attributes) throws SAXException {
//localName代表标签的名字,attributes代表标签的属性 顺带一说字符串的比较用localName.equals("condition")
}
public void
endElement(String uri, String localName, String qName,Attributes attributes) throws SAXException {
}
public void startDocument() throws SAXException {
}
public void endDocument() throws SAXException {
}
}
3.动态更新布局
//将解析获得的数据动态显示在Activity上,每一个布局对应一天的天气
//这样的布局可以直接用在main.xml布局文件中,标签为<zxc.android.CityWeather.SingleWeatherInfo>
class SingleWeatherInfoView extends LinearLayout{
private ImageView imageView;
private TextView textView;
public SingWeaherInfoVIew(Context context){
imageView=new ImageView(context);
textView=new TextView(context);
this.addView(imageView);
this.addView(textView);
}
public void setImageView(String Icon){
//从url获得图片生成位图
URL url=new URL(Icon);
URLConnection conn=url.openConnection();
conn.connect();
InputStream is=conn.getInputStream();
BufferedInputStream bis=new BufferedInputStream(is);
Bitmap img=BitmapFactory.decodeStream(bis);
bis.close();
is.close();
imageView,setBitmap(img);
}
public void setTextView(String text){
textView.setText(text);
}
}
总结:薄弱部分在于JAVA IO方面缺乏了解。
//File构造函数
File(String Path) File(String Path,String fileName) File(File dirObj,String fileName) File(URI uriObj)
File file=new File(/sdcard/data/);
System.out.print(file.getName());
//还有比较重要的方法 file.getPath() file.getAbsolutePath() file.getParent() file.exists() file.canWrite() file.canRead()
//file.isFile() file.isDirectory() file.lastModified() 文件大小file.length() file.renameTo(File new Name); file.delete()
//如果一个File确定是文件夹 可以用file.listFiles()来返回其下的文件对象数组 file.list()返回储存文件名的数组
//如果要设置listFiles所返回的文件类型 用一个类实现FilenameFilter对象,重写boolean accept()方法 调用时候file.list(new Filter("txt"));
//创建文件夹file.mkdirs(); 路径中所有不存在的文件夹都会被创建
JAVA IO 字节流 字符流补习:
字节流InputStream OutputStream
在与字节和其他二进制对象打交道时用字节流
1.FileInputStream可以从文件读取字节
//FileInputStream(String path) FileInputStream(File fileObj)
FileInputStream fileInputStream=new FileInputStream("1.txt");
fileInputStream.read(n)来读取n个字节 fileInputStream.available()来显示剩余可读字节数
FileOutputStream可以向文件写入字节
//FileOutputStream(String path) FileOutputStream(File fileObj) FileOutputStream(String path,boolean append) //FileOutputStream(String,path,boolean append) 如果append为true,则文件以添加形式打开
FileOutputStream fileOutputStream=new FileOutputStream("1.txt"); //这个1.txt现在可能还不存在,在文件开始写的时候会创建
byte buf[]="HelloWorld";
for(int i=0;i<buf.size();i++)
fileOutputStream.write(buf[i]); //一次只能写入一个字节,若要一次输入多个字节,可以用ByteArrayOutputStream
2.BufferedInputStream/BufferedOutputStream缓冲流
一个缓冲流允许Java一次对多个字节执行I/O操作,提高了性能
//BufferedInputStream(InputStream inputStream) BufferedInputStream(InputStream inputStream,int bufSize)
BufferedInputStream可以把InputStream包装成缓冲流,从而提高性能
字符流Reader Writer
在与字符,字符串打交道的时候使用字符流,因为字节流不能直接处理Unicode字符
Reader,Writer //其read(),write()方法读取下一个字符
CharArrayReader,CharArrayWriter
BufferedReader,BufferedWriter //使用缓冲来增强功能,bufferedReader.readLine()非常好用
二.文件管理应用
大致思路:
1.通过一个路径(???)创建一个File,通过File.listFile()返回得到的文件数组,将其设置在listView上 //根路径只需要"/"
2.每一个listViewItem的点击事件来判断是否为文件,若为文件夹,进行下一步搜索,若为文件,进行对应的处理
//如何按照不同的文件类型设置不同item的layout
3.设置每个文件的长按弹出菜单,对文件进行打开,重命名,删除等操作
//对应文件的打开有通用的规则?
1.设置ListView的adapter
ListView需要设置一个规定每一个item样式和数据源的adapter,可以是ArrayAdapter SimpleAdapter 都是继承自 BaseAdapter
class IconTextAdapter extends BaseAdapter(){
private List<IconText> dirEntries=null; //设置私有的List来记录得到的Files信息
public IconTextAdapter(Context context,List<IconText> dirs){
}
//需要重写几个方法getCount();getitem(); getItemId() 以及其父类Adapter的getView()方法,这个是设置每个item的layout
}
//自定义一个layout继承自LinearLayout来做item的layout
class IconTextView extends LinearLayout{
ImageView img=null;TextView txt=null;
public IconTextView(Context context,IconText file) //通过构造函数把信息设置生成控件在view中
}
最后在主activity中设置setListAdapter(new IconTextAdapter(this,dirEntries)); //这个dirEntries是File [] dirEntries=new File("/").listFiles();
2.打开各种媒体的文件
Intent intent=new Intent();
intent.setAction(android.content.Intent.ACTION_VIEW); //setAction里面VIEW大多是想用户展示的东西
intent.setDataAndType(Uri.fromFile(file),"image/*"); // "video/*"视频 "audio/*"音乐 用这种格式系统会默认用不同Dialog来处理文件
startActivity(intent);
3.创建Menu菜单选项
public boolean onCreateOptionsMenu(Menu menu){
//menu.add(groupId,ItemId,order,显示的文本)
menu.add(0,0,0,"新建文件夹").setIcon(R.drawable.addfolder);
menu.add(0,1,0,"根目录").setIcon(R.drawable.root);
}
public boolean onOptionsItemSelected(MenuItem item){
//通过item.getItemId()确定选择的菜单项,然后进行相应的操作
}
4.创建文件点击菜单选项
点击文件判断点击的isFile()为true时进行创建文件点击菜单的选项
new AlertDialog.Buider(FileManager.this).setTitle()
.setItems(menu,listener) //String[] menu={"打开","重命名","删除","复制","剪切"};
.show();
其中 OnClickListener listener=new DialogInterface.OnClickListener(){
public void onClick(DialogInterface dialog,int which){
}
}
总结:对Java 集合部分不熟悉.
Java 集合框架知识补习:
Collection接口是集合框架的基础,最核心的一些方法add(obj) clear() contains() equals()等
List接口扩展了Collection,使用基于0的索引,列表可以包含重复的元素
比如ArrayList<E> //在Java中标准数组是固定长度的,而ArrayList可以动态的增减长度
比如LinkedList 实现了链表数据结构
Set接口扩展了Coleection,不允许存在重复的元素, 比如扩展了Set的SortedSet接口,是升序排列的Set
Queue队列接口扩展了Collection,先进先出 peak()返回顶部元素 remove()删除顶部的元素 比如Deque双端队列
Map映射接口是存储键值对的对象,最核心的一些方法containsKey(Object k) containsValue(Object v) get(Object k) put(K k,V v) size()
比如HashMap<String,int> map=new HashMap<String,int>();
Hashtable功能与HashMap类似,但不允许null键和null值,而且是同步的(Syncronized)
相关推荐
我整理 Android 经典项目 学习源码 2014年参加齐鲁软件大赛,因为从来没有学习过Android 所以整理了这些资料,因为学习了这些资料我做出了一个 Android健身应用得了一等奖,所以这些资料上传 ,让后来人,继续努力吧...
Android企业级项目实战教程源码,这里共享一个百度云下载地址,有需要的朋友可以下载,通过源码学习对技术会有很大的帮助,里面的示例程序由浅入深
内容简介 本书是在《Android 移动开发基础案例教程》的基础上编写的,涵盖 Android 基础的全部 知识,不仅是对 Android 基础的巩固与提高,更是对项目经验的积累。本书以博学谷项目为主线, 从项目的需求分析、产品...
Android 完整的通讯录项目源码学习专用Android 完整的通讯录项目源码学习专用
android 完整项目源码,各种小工具聚合,仅用于研究学习学习
使用本Android SNS 178折社区 应用开源框架 可以迅速开发android手机应用 应用范围 商城android应用 交友android手机应用 开发者:178折网购社区 网址:http://www.178zhe.com
QQ的登录界面 源代码 .zip quitesleep手机电话功能软件.rar rokon_src_2-0-3_游戏引擎.zip scientific-calculator-for-android( 功能强大的科学计算器).zip SeeJoPlayer(播放器).7z SipDroid客户端源码.rar ...
本人大学期间总结的50个Android优秀的源码,希望对学习Android的有所帮助
Android Studio实现安卓APP大作业百宝箱app源代码移动终端开发大作业。Android Studio实现安卓APP大作业百宝箱app源代码移动终端开发大作业。Android Studio实现安卓APP大作业百宝箱app源代码移动终端开发大作业。...
Android项目应用源码安卓学习设计资料源代码合集(165个),可供学习设计参考。
《Android企业级项目实战教程》源代码,附演示apk
Android应用源码之扫雷游戏源码.zip项目安卓应用源码下载Android应用源码之扫雷游戏源码.zip项目安卓应用源码下载 1.适合学生毕业设计研究参考 2.适合个人学习研究参考 3.适合公司开发项目技术参考
Android小游戏源代码.rar,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。
Android应用源码安卓高仿雅虎天气项目源码,使用的库文件有点多,呵呵。欢迎一起学习
Android应用源码某国企安卓办公OA项目,用入学习,如用商业,后果自负亲测可用, 谢谢支持。
Android源码——listView学习源码.zip
50个优秀Android项目源码,可以学习下。
本项目是一个适合新手学习的安卓记事本程序例子源码,包括很多安卓基础的知识,并且代码有比较详细的注释,主要用到了listView展示数据和SQLite的读写建表等操作。代码量很少没有分层布局也相对简单方便学习分析。
从该项目源代码中,可以掌握socket连接、管理cookie等方法。 4、 Android SMSPopup SMSPopup可以截获短信内容显示在一个泡泡形状的窗口中。从这个项目中可以掌握到如何使用内置的短信SMS接口。 5、 Stand...
搜集到的 Android 经典项目 学习源码搜集到的