接触Android有一年了,突然发现自己掌握的东西很散乱,最近有时间找了本书(<第一行代码>挺不错的一本书)好好系统的清理了下思路,把重点基础的案列自己弄了下,感觉挺不错的。这些案列对于新手来说是很有帮助的,希望大家共同学习,一起成长。
下面来看下demo中包含的案列吧,逻辑都已经写好,第一张为主页面:
第二张是对本地数据库sqlite的一些基本操作:
下面这个是为了测试sharedPreferences实现记住密码功能:
这张是多媒体部分的一些操作,是一些很基础的demo,多媒体涉及的东西其实还非常多:
广播机制,静态的在Manifest里面注册reciver:
下面是多线程和服务相关的内容,Android的多线程和java的多线程在实现上是有区别的:
fragment案例,子fragment需要引入v4包,不然会报inflate错误:
读取系统联系人:
源代码中注释齐全,便于学习,下面给出选择相册的源码类:
package com.yy.testdemo;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import com.yy.util.LogUtil;
import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.provider.MediaStore;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;
/**
* 拍照和相册选取图片
* @author Administrator
*
*/
public class Photo extends Activity{
private static final String TAG="Photo";
private static final int TAKE_PHOTO=1;
private static final int CROP_PHOTO=2;
private Button takePhoto;
private Button pickPhoto;
private ImageView picture;
private Uri imageUri;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.photo);
//拍照获取图片:新建图片储存地址---打开相机程序---回传到onActivityResult-打开裁剪程序---回传到onActivityResult---
//用Bitmap进行显示
takePhoto=(Button)findViewById(R.id.take_photo);
picture=(ImageView)findViewById(R.id.pic);
takePhoto.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
//创建文件对象,储存拍照后的图片,第一个参数为手机SD卡得根目录
File outImageFile=new File(Environment.getExternalStorageDirectory(),"Image.jpg");
if(outImageFile.exists()){
outImageFile.delete();
}
try {
outImageFile.createNewFile();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//生成图片对象的唯一URI地址
imageUri=Uri.fromFile(outImageFile);
Intent intent=new Intent("android.media.action.IMAGE_CAPTURE");
//获得输出地址
intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);
startActivityForResult(intent,TAKE_PHOTO); //启动相机
}
});
//相册选取
pickPhoto=(Button)findViewById(R.id.pick_photo);
pickPhoto.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent=new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(intent,CROP_PHOTO); //采用了裁剪的逻辑回传
}
});
}
/**
* 回传数据处理
*/
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
switch (requestCode) {
case TAKE_PHOTO: //相机回传
if(resultCode==RESULT_OK){
Intent intent=new Intent("com.android.camera.action.CROP");
intent.setDataAndType(imageUri, "image/*"); //裁剪的数据和类型
intent.putExtra("scale", true); //允许缩放
intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);
startActivityForResult(intent, CROP_PHOTO); //启动裁剪
}
break;
case CROP_PHOTO: //裁剪回传
if(resultCode==RESULT_OK){
try{
imageUri=data.getData(); //获取地址
LogUtil.i(TAG, ""+imageUri);
//通过流文件来实现
Bitmap bitmap=BitmapFactory.decodeStream(getContentResolver().openInputStream(imageUri));
//显示图片
picture.setImageBitmap(bitmap);
}catch(FileNotFoundException e){
e.printStackTrace();
}
}
break;
default:
break;
}
}
}
还差网络方面的内容,目前正在完善中。。。。
最后,给出工程源码下载地址: