Android開發小技巧總結
總結下一些相關技巧。
1 全屏
super.onCreate(savedInstanceState); getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.main);</pre>
2 取得屏幕像素
DisplayMetrics dm=new DisplayMetrics();getWindowManager().getDefaultDisplay().getMetrics(dm);</pre>
3 簡單拍照
button.setOnClickListener(new OnClickListener(){@Override public void onClick(View arg0) { Intent intent = new Intent("android.media.action.IMAGE_CAPTURE"); startActivityForResult(intent,SELECT_PICTURE_FROM_CAMERA); } });
//然后重載startActivityForResult添加自己的實現
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) { if( resultCode==RESULT_OK) { if(requestCode==SELECT_PICTURE_FROM_CAMERA) { File image=new File(Environment.getExternalStorageDirectory(), "camera.jpg"); selectedImagePath=image.getAbsolutePath(); Drawable d=Drawable.createFromPath(selectedImagePath); ImageView.setImageDrawable(d); } }
} </pre>
4 從android本地多媒體圖片文件夾中選擇圖片
Intent i=new Intent(Intent.ACTION_GET_CONTENT);i.setType("image/*"); Intent wrapi=Intent.createChooser(i, "choose"); startActivityForResult(wrapi, SELECT_PICTURE_FROM_FILE);
//然后重載startActivityForResult添加自己的實現
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) { if( resultCode==RESULT_OK) { if(requestCode==SELECT_PICTURE_FROM_FILE ) { Uri selectedImageUri = data.getData(); selectedImagePath=getPath(selectedImageUri); imageView.setImageURI(selectedImageUri); } }
} //獲取當前選擇的圖片,并顯示在imageView上
private String getPath(Uri uri) { String[] projection={MediaStore.Images.Media.DATA}; Cursor cursor=managedQuery(uri,projection,null,null,null); int column_index=cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA); cursor.moveToFirst(); return cursor.getString(column_index);
}
//Query實現從圖片數據庫中查詢到所要記錄</pre>
5 Activity之間帶內容的跳轉
Intent intent = new Intent();Bundle imageMsg = new Bundle(); imageMsg.putString("filePath", selectedImagePath); / intent.putExtras(imageMsg); intent.setClass(ActivityA.this,ActivityB.class); startActivity(intent); ActivityA.this.finish();</pre>
6 位圖縮放
public Bitmap zoomImage(Bitmap bgimage, int newWidth, int newHeight) {
int width = bgimage.getWidth();
int height = bgimage.getHeight();
Matrix matrix = new Matrix();
float scaleWidth = ((float) newWidth) / width;
float scaleHeight = ((float) newHeight) / height;
matrix.postScale(scaleWidth, scaleHeight);
Bitmap bitmap = Bitmap.createBitmap(bgimage, 0, 0, width, height,
matrix, true);
return bitmap;
}
7 Gallery的使用
Gallery gallery=(Gallery)findViewById(R.id.gallery);
myImageAdapter imageadapter=new myImageAdapter(this); //傳入context
gallery.setAdapter(imageadapter);
gallery.setOnItemClickListener(new Gallery.OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,long arg3) {
Bitmap selectedBitmap=BitmapFactory.decodeResource(getResources(),imageadapter.myImageIds[arg2]);
}
});
gallery.setSelection(1);
//adapter的類定義
public class myImageAdapter extends BaseAdapter{
int mGalleryItemBackground;
private Context context;
public Integer[] myImageIds={
//圖片的資源id號
};
public myImageAdapter(Context context)
{
this.context=context;
TypedArray typed_array=context.obtainStyledAttributes(R.styleable.Gallery);
mGalleryItemBackground=typed_array.getResourceId(R.styleable.Gallery_android_galleryItemBackground , 0);
//mGalleryItemBackground++;
typed_array.recycle();
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return myImageIds.length;
}
@Override
public Object getItem(int arg0) {
// TODO Auto-generated method stub
return arg0;
}
@Override
public long getItemId(int arg0) {
// TODO Auto-generated method stub
return arg0;
}
@Override
public View getView(int arg0, View arg1, ViewGroup arg2) {
// TODO Auto-generated method stub
ImageView imageView=new ImageView(context);
imageView.setImageResource(myImageIds[arg0]);
imageView.setScaleType(ImageView.ScaleType.FIT_XY);
imageView.setLayoutParams(new Gallery.LayoutParams(128,128));
imageView.setBackgroundResource(mGalleryItemBackground);
return imageView;
}
}
8 activity中使用線程
private Handler mHandler=new Handler();
private Runnable mRunnable=new Runnable()
{
@Override
public void run() {
// TODO Auto-generated method stub
}
};
mHandler.post(mRunnable); //啟動線程
9 保存到android多媒體圖片文件夾
android.provider.MediaStore.Images.Media.insertImage(getContentResolver(),resultBitmap, "picName", "descrition");
10 其他技巧摘錄自網絡,見鏈接
2 Android模擬器中使用sdcard
http://blog.csdn.net/unix_fans/archive/2009/08/20/4465038.aspx
http://blog.csdn.net/jinlking/archive/2009/03/03/3953319.aspx
在Android中調用圖片視頻、音頻、錄音、拍照:
http://blog.csdn.net/bdwgbdwg/archive/2010/11/23/6029208.aspx
4 Android.Content.Provider.rar
11 Activity之間動態跳轉(摘自網絡)
//頁面跳轉
int version = Integer.valueOf(android.os.Build.VERSION.SDK);
if (version >= 5 ) {
overridePendingTransition(R.anim.zoomin, R.anim.zoomout); //此為自定義的動畫效果,下面兩個為系統的動畫效果
//overridePendingTransition(android.R.anim.fade_in,android.R.anim.fade_out);
//overridePendingTransition(android.R.anim.slide_in_left,android.R.anim.slide_out_right);
}
//頁面跳轉//zoomin.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/decelerate_interpolator" >
<scale android:fromXScale="2.0" android:toXScale= "1.0"
android:fromYScale="2.0" android:toYScale= "1.0"
android:pivotX="50%p" android:pivotY= "50%p"
android:duration="@android:integer/config_mediumAnimTime" />
</set>
//zoomout.xml<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/decelerate_interpolator"
android:zAdjustment="top" >
<scale android:fromXScale="1.0" android:toXScale= ".5"
android:fromYScale="1.0" android:toYScale= ".5"
android:pivotX="50%p" android:pivotY= "50%p"
android:duration="@android:integer/config_mediumAnimTime" />
<alpha android:fromAlpha="1.0" android:toAlpha= "0"
android:duration="@android:integer/config_mediumAnimTime" />
</set>12 模擬按鈕press和release的效果
http://blog.csdn.net/sytzz/archive/2010/06/16/5673662.aspx
13 實現畫出一個透明的點
Paint paint=new Paint();
paint.setColor(Color.BLUE);
paint.setAlpha(0);canvas.drawPoint(x, y, paint);
這樣就好了嗎? no,你需要把你的canvas建立在一個允許透明的bitmap上,如下
blankBitmap=Bitmap.createBitmap(picWidth, picHeight, Config.ARGB_8888);//不是Config.sRGB_565
Canvas c = new Canvas(blankBitmap);
作者: Aga.J
出處: http://www.cnblogs.com/aga-j