android studio學習知識點

1.android:onClick=“XXX”

一般監聽OnClickListener事件,我們都是通過Button button = (Button)findViewById(…);
button.setOClickLisener…這樣的方式來實現。
其實可以在xml中定義好方法名稱,在Activity中實現該方法就可以了

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:onClick="onFlags"/>

2.通過數據線連接自己的手機調試運行項目

右上角點開綠三角會顯示當前已經識別連接了的設備和虛擬機
點擊troubleshoot device connections可以查看相關問題解決辦法

  1. 連接手機後需要在開發者選項裏面打開USB調試
  2. USB調試下面有USB安裝,需要允許
  3. 然後AS會自動識別

    3.調用系統相冊進行圖像處理等
public void select(View view){
    Log.d("grabCut","選擇圖片");
    if(ContextCompat.checkSelfPermission(MainActivity.this,
            Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED){
        ActivityCompat.requestPermissions(MainActivity.this,new String[]{
                Manifest.permission.WRITE_EXTERNAL_STORAGE
        },1);
    }
    Intent intent = new Intent(Intent.ACTION_PICK,
            android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
    startActivityForResult(intent, IMAGE_REQUEST_CODE);
}
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        //在相冊裏面選擇好相片之後調回到現在的這個activity中
        switch (requestCode) {
            case IMAGE_REQUEST_CODE:		//IMAGE_REQUEST_CODE 需要>-1,此處在前面聲明爲1
                if (resultCode == RESULT_OK) {//resultcode是setResult裏面設置的code值
                    try {
                        Uri selectedImage = data.getData(); //獲取系統返回的照片的Uri
                        String[] filePathColumn = {MediaStore.Images.Media.DATA};
                        Cursor cursor = getContentResolver().query(selectedImage,
                                filePathColumn, null, null, null);//從系統表中查詢指定Uri對應的照片
                        cursor.moveToFirst();
                        int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
                        path = cursor.getString(columnIndex);  //獲取照片路徑
                        cursor.close();
                        bitmap = BitmapFactory.decodeFile(path);
                        imageView.setImageBitmap(bitmap);
                        todo();	//封裝了的處理函數
                    } catch (Exception e) {
                        // TODO Auto-generatedcatch block
                        e.printStackTrace();
                    }
                }else{
                    Log.i("MainActivity","operation error");
                }
                super.onActivityResult(requestCode, resultCode, data);
        }
    }

3. getExternalStorageDirectory() is deprecated

Context.getExternalFilesDir代替,Android Q以後Environment.getExternalStorageDirectory()返回的路徑可能無法直接訪問,所以改成了Context.getExternalFilesDir

File appDir = new File(context.getExternalFilesDir(null),"xyz");

最後

這裏也有不少有用的知識點

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章