android知识点总结

1.MD5的使用
/**
* 把一个普通的字符串转换为md5格式的字符串(不可逆)
* @param url
* @return
*/
private static String getMD5(String url) {
StringBuffer sb=new StringBuffer();
try {
//获得摘要对象
MessageDigest md=MessageDigest.getInstance("md5");
//转换
md.update(url.getBytes());
byte[] bytes=md.digest();
//如果直接转换时可以的,但可读性差
for(byte b:bytes){
//格式化
String temp=Integer.toHexString(b & 0xFF);
//sb.append(temp);
if(temp.length()==1){
sb.append("0");
}
sb.append(temp);
}
} catch (Exception e) {
// TODO: handle exception
}


return sb.toString();
}
2、利用byte数组来进行图片的压缩
//对图片进行压缩
protected static Bitmap compress(ImageView iv, InputStream in) {
/*BitmapFactory.Options options=new BitmapFactory.Options();
options.inJustDecodeBounds=true;*/
//先试图获得image的大小
try {
int width=iv.getWidth();//可能为0
int hight=iv.getHeight();
if(width==0||hight==0){
//折中.用固定的尺寸,使用typevlue类
//用设备的宽和高的像素值
width=context.getResources().getDisplayMetrics().widthPixels;
hight=context.getResources().getDisplayMetrics().heightPixels;

}
//获得图像的宽和高
//首先将inputstream转为数组
ByteArrayOutputStream out=new ByteArrayOutputStream();
int len=-1;
while((len=in.read())!=-1){
out.write(len);
}
byte[] bytes=out.toByteArray();
out.close();
Options opts=new Options();
opts.inJustDecodeBounds=true;
BitmapFactory.decodeByteArray(bytes, 0,bytes.length, opts);
int bitmapHeight=opts.outHeight;
int bitmapWidth=opts.outWidth;
//压缩的比例
int SampleSize=1;
//以较大的值进行压缩
if(bitmapWidth*1.0/width>1||bitmapHeight*1.0/hight>1){
SampleSize=(int) Math.ceil(Math.max(bitmapWidth*1.0/width, bitmapHeight*1.0/hight));
}
opts.inSampleSize=SampleSize;
opts.inJustDecodeBounds=false;
Bitmap bitmap=BitmapFactory.decodeByteArray(bytes, 0, bytes.length,opts);
return bitmap;
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
3.获得系统的核心数
private static int getCoreNumbers() {
try {
File file=new File("/sys/devices/system/cpu/");
File [] files=file.listFiles(new FilenameFilter() {

@Override
public boolean accept(File dir, String filename) {
if(filename.contains("cpu")){
return true;
}
return false;
}
});
return files.length;
} catch (Exception e) {
e.printStackTrace();
return 1;
}
}
4.利用get方法来进行注册(httpclient方法)
//利用post方法来完成注册
public void register(View v){
//起线程
new Thread(){
//run方法
public void run() {
//alt+shift+z用于设置异常
try {
//采用默认的httpclient
HttpClient client=new DefaultHttpClient();
//使用post方法来获取地址
HttpPost post=new HttpPost("http://172.60.20.159:8080/ems/regist.do");
//设置请求头,协议中的规定
post.setHeader("Content-Type", "application/x-www-form-urlencoded");
List<NameValuePair> parameters=new ArrayList<NameValuePair>();
//参数添加进去
parameters.add(new BasicNameValuePair("loginname", "cs"));
parameters.add(new BasicNameValuePair("password", "111"));
parameters.add(new BasicNameValuePair("realname", "c"));
parameters.add(new BasicNameValuePair("email", "s"));
HttpEntity entity=new UrlEncodedFormEntity(parameters);
//设置参数,对其设置实体
post.setEntity(entity);
HttpResponse resp=client.execute(post);
HttpEntity respEntity=resp.getEntity();
InputStream in=respEntity.getContent();
BufferedReader br=new BufferedReader(new InputStreamReader(in));
String result=br.readLine();
in.close();
Message.obtain(handler,102,result).sendToTarget();
} catch (Exception e) {
e.printStackTrace();
}

};
}.start();
}
5.利用post方法来完成注册(httpURLconnection方法)
public void register2(View v){
//起线程
new Thread(){
public void run() {
//
try {
URL url=new URL("http://172.60.20.159:8080/ems/regist.do");
HttpURLConnection connection=(HttpURLConnection) url.openConnection();
//设置使用的方法为post
connection.setRequestMethod("POST");
connection.setDoInput(true);
connection.setDoOutput(true);
connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
//获得连接
connection.connect();
//提交参数
OutputStream out=connection.getOutputStream();
PrintWriter pw=new PrintWriter(out);
String params="";
HashMap<String, String> map=new HashMap<String, String>();
map.put("loginname", "xx");
map.put("password", "222");
map.put("realname", "cc");
map.put("email", "66");

params=getParams(map);
pw.print(params);
pw.flush();
pw.close();

InputStream in=connection.getInputStream();
BufferedReader br=new BufferedReader(new InputStreamReader(in));
String result=br.readLine();
br.close();
Message.obtain(handler,102,result).sendToTarget();
}catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}.start();
}
public String getParams(HashMap<String, String> map) {
StringBuilder sb=new StringBuilder();
for(Entry<String, String> entry:map.entrySet()){
sb.append(entry.getKey());
sb.append("=");
sb.append(entry.getValue());
sb.append("&");
}
return sb.substring(0,sb.length()-1);
};
}
6.设置listview中字体的显示样式
首先找到字体文件,c:/windows/fonts/选择字体文件复制
在eclipse中的assets文件下建立一个文件夹,命名为fonts,将复制的文件粘贴到该文件夹下
然后就可以写出字体的设置方法如下:
private static Typeface tf;
public void setTypeface(Context context,TextView tv){
if(tf==null){
AssetManager mgr = context.getAssets();
tf=Typeface.createFromAsset(mgr , "fonts/ITCEDSCR.TTF");
}
tv.setTypeface(tf);
}
在listview中调用该方法
Texttview tv;
setTypeface(context,tv);
7MVP模式总结
MVP模式对M V P这三个角色有比较严格的要求
1)V与M不能直接进行通信
2)V可以与P进行互相通信,P可以与M进行单向的通信。如果M需要向P传递数据
   要使用回调的方式(接口监听器)
3)V要提供所有与视图更新相关的方法,但是V不能自己调用。所有更新视图中内容的方法,必须由P来调用
4)M V P三者之间的联系全部通过接口来完成
5)M用来获取数据,V用来呈现数据,而P是两者之间的桥梁
6)实现方式,对MVP三者分别定义母接口,用于子类继承,在子类接口中填写方法,M/P子类接口需要实现类来实现具体的操作


8.DiskLruCache的简单用法
(1)创建DiskLruCache对象
DiskLruCache.open(使用的cache路径,版本号,一个key对应几个值,存储空间大小)
(2)向DiskLruCache中存储内容
Editor editor=cache.edit(key)
获得一个输出流
把保存的东西变成输入流进行操作
执行完毕后,进行提交commit
写DiskLruCache日志文件:cache.flush();
(3)从DiskLruCache中都区内容
Snapshot snap=cachen.get(key);
9.Notification 的用法
定义对象
   private NotificationManager nManager;
   初始化对象
   nManager=(NotificationManager) getSystemService(NOTIFICATION_SERVICE);
   private void updateNotification(String name){
NotificationCompat.Builder builder=
new NotificationCompat.Builder(this);
builder.setSmallIcon(R.drawable.ic_launcher);

RemoteViews  rv=
new RemoteViews(getPackageName(),
R.layout.ntf_layout_1);
builder.setContent(rv);
builder.setTicker("开始播放"+name);
rv.setTextViewText(R.id.textView1,name);
rv.setOnClickPendingIntent(R.id.imageButton1,
   PendingIntent.getService(this,
   100,new Intent(STOP), PendingIntent.FLAG_UPDATE_CURRENT));

Notification ntf=
builder.build();
ntf.flags=Notification.FLAG_AUTO_CANCEL;
nManager.notify(0,ntf);
startForeground(0, ntf);

}
10.Socket的简单连接
(1)服务端
public class Myserver {

ServerSocket serverSocket;
private void start(){
//具体的业务  65536
try {
//端口号取值的范围0-65535,一般用10000以上
serverSocket=new ServerSocket(30000);
System.out.println("服务器已经启动!");
//等待作为客户的socket链接
Socket socket=serverSocket.accept();
//链接已经建立起来,服务端利用上面的方法与客户进行通信
//采用io流形式进行通信
//服务端的输入流用来接收客户端发过来的信息
BufferedReader br=new BufferedReader(
new InputStreamReader(socket.getInputStream(), "utf8"));
//服务端的输出流,用来向客户发送信息
PrintWriter pw=new PrintWriter(
new OutputStreamWriter(socket.getOutputStream(), "utf8"),true);
//服务端发送问候语
pw.println("hello!");
while(true){
String request=br.readLine();
if(request.equals("what?")){
pw.println("evething");
}else if(request.equals("bye")){
pw.println("bye");
break;
}else{
pw.println("there is not "+request+",check your request");
}
}
br.close();
pw.close();
socket.close();
System.out.println("客户端已退出");

} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void main(String[] args) {
Myserver server=new Myserver();
server.start();
}
}
   (2).客户端
  package com.example.client;


   import java.io.BufferedReader;
   import java.io.IOException;
   import java.io.InputStreamReader;
   import java.io.OutputStreamWriter;
   import java.io.PrintWriter;
   import java.net.Socket;
   import java.net.UnknownHostException;
   import java.util.Scanner;


//模拟客户端
public class Client {
public static void main(String[] args) {
try {
Socket socket=new Socket("172.60.20.159",30000);
//如果代码执行到这里,说明链接成果了
BufferedReader br=new BufferedReader(new InputStreamReader(socket.getInputStream(), "utf8"));
PrintWriter pw=new PrintWriter(new OutputStreamWriter(socket.getOutputStream(), "utf8"),true);
String string=br.readLine();
System.out.println(string);
Scanner scanner=new Scanner(System.in);
while(true){
String request=scanner.nextLine();
pw.println(request);
String response=br.readLine();
System.out.println(response);
if(response.equals("bye")){
break;
}
}
br.close();
pw.close();
scanner.close();
socket.close();
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}

}
}
11.获得网络数据的访问
package com.example.weatherdemo;


import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;


import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;


public class MainActivity extends Activity {


@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}


public void get(View v){
new Thread(){
public void run() {
try {
String cityname=URLEncoder.encode("北京", "utf8");
URL url = new URL("http://op.juhe.cn/onebox/weather/query?cityname="+cityname+"&key=15b3860417a0875de210d562b0be2ce3");
HttpURLConnection c = (HttpURLConnection) url.openConnection();
c.setDoInput(true);
c.setRequestMethod("GET");
c.connect();
BufferedReader br = new BufferedReader(new InputStreamReader(c.getInputStream()));
String line = null;
StringBuffer sb = new StringBuffer();
while((line=br.readLine())!=null){
sb.append(line);
}
br.close();
String result = sb.toString();
Log.d("TAG", result);
} catch (Exception e) {
e.printStackTrace();
}
};


}.start();
}
}
12.


valley框架的简单实用
首先应保证将该jar包导入libs中,然后进行buildpath,add进去


1.创建一个任务队列
RequestQueue queue;
2.创建一个请求任务
该URL为请求的地址
StringRequest request=new StringRequest(URL,listener(其中的onresponse方法中来处理获得的数据),errorlistener(当处理错误时执行的操作));
3.将任务添加到任务的队列中
queue.add(request)


gson的简单用法
1.创建gson对象
Gson gson=new Gson();
创建实体类用于封装数据


2.提供json字符串,以及要把其解析成的Java对象
要求weather类中的属性与json字符串中相匹配
WeatherBean bean=gson.fromJson(arg0, WeatherBean.class );
String result=bean.toString();
13.Alertdialog的使用
AlertDialog.Builder builder=new AlertDialog.Builder(context);
builder.setIcon(R.drawable.ic_warning);
builder.setTitle("删除");
builder.setMessage("确定要删除");
builder.setNegativeButton("考虑一下", null);
builder.setPositiveButton("删之", new DialogInterface.OnClickListener() {

@Override
public void onClick(DialogInterface dialog, int which) {

//设置要进行的操作
}
});
builder.create().show();
14.动画的效果实现,加载时使用
ImageView iv =(ImageView) findViewById(R.id.iv);
//在drawable目录下创建动画效果 Animator-set形式的xml文件
final Drawable drawable = getResources().getDrawable(R.loading_anim);
iv.setImageDrawable(drawable);
((AnimationDrawable)drawable).start();
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值