您的位置:首页 > 移动开发 > Android开发

Android开发中的小技巧

2015-09-30 18:15 531 查看
本文仅仅为个人开发中容易遗忘的一些知识点,某些省略地方看不懂的请原谅或绕过!CSDN如有隐藏功能,作为笔记的部分是会主动隐藏的,不希望误导某些人,请留心此标记

Android eclipse UI设计和xml切换 快捷键

切换AndroidUI 视图 和xml 视图

alt + pageUp

alt + pageDown

切换 代码之间 打开的文件

ctrl+ pageUp

ctrl+ pageDown

Android Junit 测试

测试方法必须 test开头

点击 –>方法名 —>右击 Android junit测试

Gson 把 一个json 字符串 转换为一个java 对象

String jsonStr = doGet(msg);
Gson gson = new Gson();
Result result = gson.fromJson(jsonStr,Result.class); // Result.class bean对象


智能小慕 机器人

使用 了枚举类型,Adapter返回 ChatMessage时候,比平时多重写了

两个方法 getItemViewType(int position); 和 getViewTypeCount();//用了两个item布局

且为了 listView的缓存效率 ,用到了ViewHolder(普通类 )

listView的缓存效率

listView多布局的使用

第三方Api的调用

private final class ViewHolder{
TextView mDate;
TextView mMsg ;
}

public View getView(int position,View convertView,ViewGroup parent){
ChatMessage charMessage = mlist.get(position);
ViewHolder viewHolder = null;
if(convertView == null){
if(getItemViewType(position) == 0 ){
convertView = inflater.inflate(R.layout.item_from_msg,parent,false);
// 设置 ViewHolder 的引用执行 convertView的各个View
viewHolder = new ViewHolder();
viewHolder.mDate = (TextView) convertView.findViewById(R.id.id_item_from_msg_date);
viewHolder.mMsg = (TextView) convertView.findViewById(R.id.id_item_from_msg_info);

}else{
...............

}
convertView.setTag(viewHolder);  // 存储 一下 ViewHolder
}else{
viewHolder = (ViewHolder) convertView.getTag();  //取出ViewHolder
}
//设置数据
viewHolder.mDate.setText(charMessage.getDate());
viewHolder.mMsg.setText(charMessage.getMsg());
return convertView;
}


初始化欢迎数据,(即先设置 1 个listView数据 )

消息传送和更新UI

onclick(){

... //发送:  这里也需要跟新UI和 通知数据变化
ChatMessage fromMessage = HttpUtils.sendMessage(toMsg);
Message msg = Message.obtain();
msg.obj = fromMessage;
handler.sendMessage(msg);
}


处理 消息

ChatMessage charMessage = msg.obj;
list.add(fromMessage);
adapter.notifyDataSetChanged();
}


HttpUrlConnection 小说明

httpUrlConnection.setDoOutput(true);以后就可以使用conn.getOutputStream().write()

httpUrlConnection.setDoInput(true);以后就可以使用conn.getInputStream().read();

get请求用不到conn.getOutputStream(),因为参数直接追加在地址后面,因此默认是false。

post请求(比如:文件上传)需要往服务区传输大量的数据,这些数据是放在http的body里面的,因此需要在建立连接以后,往服务端写数据。

因为总是使用conn.getInputStream()获取服务端的响应,因此默认值是true。

java.io.BufferedInputStream.available() 方法返回从输入流中读取不受阻塞,输入流方法的下一次调用的剩余字节数。

下面的示例演示java.io.BufferedInputStream.available()方法的用法。

package com.yiibai;

import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;

public class BufferedInputStreamDemo {
public static void main(String[] args) throws Exception {

InputStream inStream = null;
BufferedInputStream bis = null;

try{
// open input stream test.txt for reading purpose.
inStream = new FileInputStream("c:/test.txt");

// input stream is converted to buffered input stream
bis = new BufferedInputStream(inStream);

// read until a single byte is available
while( bis.available() > 0 )
{
// get the number of bytes available
Integer nBytes = bis.available();
System.out.println("Available bytes = " + nBytes );

// read next available character
char ch =  (char)bis.read();

// print the read character.
System.out.println("The character read = " + ch );
}
}catch(Exception e){
e.printStackTrace();
}finally{

// releases any system resources associated with the stream
if(inStream!=null)
inStream.close();
if(bis!=null)
bis.close();
}
}
}
假设有一个文本文件c:/ test.txt,它具有以下内容。该文件将被用作输入我们的示例程序:

ABCDE
编译和运行上面的程序,这将产生以下结果:

Available bytes = 5
The character read = A
Available bytes = 4
The character read = B
Available bytes = 3
The character read = C
Available bytes = 2
The character read = D
Available bytes = 1
The character read = E


htmlUnit page.save(new File(“file”));

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android eclipse