Android開發小技巧總結

jopen 12年前發布 | 49K 次閱讀 Android 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 其他技巧摘錄自網絡,見鏈接

1 android開發環境安裝

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

3 Android Intent 大全

在Android中調用圖片視頻、音頻、錄音、拍照:

http://blog.csdn.net/bdwgbdwg/archive/2010/11/23/6029208.aspx

4 Android.Content.Provider.rar

5 Android中三種使用線程的方法.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

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!