国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Android 設(shè)置頭像(拍照獲取、相冊獲取、裁剪照片)

這篇具有很好參考價值的文章主要介紹了Android 設(shè)置頭像(拍照獲取、相冊獲取、裁剪照片)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

?????在Android原生態(tài)開發(fā)過程中,往往會設(shè)計到用戶頭像的設(shè)置問題,一般來講設(shè)置頭像需要用到拍照、獲取照片、存儲照片、裁剪照片、顯示照片等問題,本文將一步一步的進行說明講解。

首先需要強調(diào)幾點我在開發(fā)過程中遇到的問題。

  1. 權(quán)限問題,在Android6.0以后,Android的權(quán)限獲取不再是通過AndroidManifest.xml文件中聲明獲取,為了安全行,APP獲取Android的高位權(quán)限需要動態(tài)獲取。系統(tǒng)權(quán)限默認是禁止的,需要申請。動態(tài)申請權(quán)限的說明見該文章
  2. 調(diào)用順序問題,在開發(fā)過程中一定要注意代碼的執(zhí)行順序,一定要在用戶獲取指定權(quán)限之后再調(diào)用相關(guān)功能,注意權(quán)限的調(diào)用和授權(quán)是異步于主線程的,也就是說,如果你在調(diào)用權(quán)限后緊跟著調(diào)用相機的操作的還,系統(tǒng)會導(dǎo)致閃退,因為調(diào)用權(quán)限后主線程并沒有等待授權(quán)完成而繼續(xù)執(zhí)行,這就導(dǎo)致在調(diào)用相機時沒有權(quán)限。
  3. Uri和Bitmap的區(qū)別以及使用,在使用裁剪功能時,我們通常使用Uri對象來指明資源,Bitmap占用內(nèi)存而且效率低下,但是使用Uri的過程中需要注意,如果我們在調(diào)用裁剪功能前就指明了Uri參數(shù),那么返回的Intent對象中的getData方法將返回為null。
  4. Android系統(tǒng)路徑及存儲空間問題,Android分為內(nèi)部存儲和外部存儲,而且在Android開發(fā)過程中設(shè)計到大量路徑問題,Android內(nèi)外部存儲及路徑問題見該文章

下面進行具體的功能實現(xiàn)。

1.權(quán)限設(shè)置

?????在該功能的開發(fā)過程中需要使用到相機權(quán)限、存儲空間讀寫權(quán)限。

?????權(quán)限獲取可以大致分為兩部:在manifest文件中聲明權(quán)限,在activity中動態(tài)獲取權(quán)限。

  1. manifest文件的設(shè)置
	<!-- 讀寫權(quán)限 -->
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <!-- 相機權(quán)限 -->
    <uses-permission android:name="android.permission.CAMERA"/>
  1. 在Java代碼中動態(tài)申請權(quán)限
    動態(tài)申請權(quán)限代碼一般放在程序運行的首界面,在首界面運行時就向用戶申請需要的各種權(quán)限,而在動態(tài)申請的過程中,又需要實現(xiàn)兩步:申請權(quán)限和處理用戶授權(quán)信息。
    申請權(quán)限的代碼
	//一下代碼可以直接在首頁面中的onCreate方法中調(diào)用requestPermission()
    //申請權(quán)限返回碼
    private final int REQUEST_PERMISSION_CODE = 0x01;
    //可以使用Manifest.permission.***表示
    private final String[] permissions = new String[]{
            "android.permission.WRITE_EXTERNAL_STORAGE",
            "android.permission.READ_EXTERNAL_STORAGE",
            "android.permission.CAMERA"};
    /**
     * 動態(tài)申請權(quán)限
     */
    private void requestPermission() {
        List<String> requestPermissions = new ArrayList<>();
        for (String permission:permissions) {
            //判斷用戶是否已經(jīng)授權(quán)
            if (ContextCompat.checkSelfPermission(this,
                    permission) != PackageManager.PERMISSION_GRANTED){
                //如果用戶沒有授權(quán)
                requestPermissions.add(permission);
            }
        }
        /**
         * 用戶動態(tài)授權(quán)
         * 執(zhí)行該代碼后,將進入授權(quán)界面,此時主線程繼續(xù)執(zhí)行
         * 用戶授權(quán)結(jié)果將被onRequestPermissionsResult方法接受,如果需要處理則重寫該方法
         */
        if(requestPermissions.size() != 0){
            String[] strs = requestPermissions.toArray(new String[requestPermissions.size()]);
            ActivityCompat.requestPermissions(this, strs, REQUEST_PERMISSION_CODE);
        }
    }

處理授權(quán)結(jié)果

    /**
     * @param requestCode The request code passed in {@link #requestPermissions(String[], int)}.
     * @param permissions The requested permissions. Never null.
     * @param grantResults The grant results for the corresponding permissions
     */
    @Override
    public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        //授權(quán)結(jié)果的處理邏輯
    }

?????上述過程完成了權(quán)限申請過程,如果用戶授權(quán)允許調(diào)用相機,則后續(xù)可以直接調(diào)用相機進行相關(guān)操作。文章來源地址http://www.zghlxwxcb.cn/news/detail-636709.html

到了這里,關(guān)于Android 設(shè)置頭像(拍照獲取、相冊獲取、裁剪照片)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包