Android 簡(jiǎn)單的圖片查看器

說(shuō)明:在文件管理器中准夷,可以使用這個(gè)app來(lái)打開(kāi)圖片

布局文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".ViewImageAty"
        android:orientation="vertical">


    <ImageView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/imageView"
        android:adjustViewBounds="true"
        android:scaleType="fitCenter" />
</LinearLayout>

ImageView 常用的一些XML屬性和方法:

XML 屬性 相關(guān)方法 說(shuō)明
adjustViewBounds setAdjustViewBounds 是否調(diào)整自己的邊界,保持顯示圖片的長(zhǎng)寬比
cropToPadding setCropToPadding(boolean) 是否剪裁到保留該 ImageView 的 padding
maxWidth setMaxWidth(int) 設(shè)置最大寬度
maHeight setMaxHeight(int) 設(shè)置最大高度
scaleType setScaleType(ImageView.ScaleType) 顯示的圖片如何縮放與移動(dòng)
src setImageResource(int) 顯示圖片的Drawable ID

支持的scaleType 屬性:

XML 屬性 相關(guān)方法
matrix matrix方式縮放
center 居中莺掠,不變
centerInside 居中衫嵌,能完全顯示圖片
centerCrop 居中,完全覆蓋 ImageView
fitXY 圖片橫向彻秆、縱向獨(dú)立縮放楔绞,完全適應(yīng) ImageView
fitStart 左對(duì)方,保持長(zhǎng)寬比的前提下圖片放最大
fitCenter 居中唇兑,最大化酒朵,保持長(zhǎng)寬比
fitEnd 底部最大化,保持長(zhǎng)寬比

參考自 《瘋狂Android講義》

如何關(guān)聯(lián)自己的app扎附,可以打開(kāi)圖片蔫耽?

在打開(kāi)圖片的Activity里需要必須設(shè)置以下三個(gè)屬性:

<intent-filter>
    <action android:name="android.intent.action.VIEW" />
    <category android:name="android.intent.category.DEFAULT" />
    <data android:mimeType="image/*" />
</intent-filter>

可以通過(guò)設(shè)置 mimeType 來(lái)關(guān)聯(lián)對(duì)應(yīng)的類(lèi)型,比如:mimeType="vedio/* 關(guān)聯(lián)視頻格式的文件等留夜。

詳細(xì)可以參考:Android 常用 mimeType 表

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

讀取圖片匙铡,需要寫(xiě)入到外部存儲(chǔ)器(SD卡)的權(quán)限:
<uses-permissionandroid:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

如果是 API23 以上還需要?jiǎng)討B(tài)權(quán)限:

 public static final int WRITE_STORAGE_PERMISSION_CODE = 1;
 ...
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_view_image);
    ...
    //判斷版本
    if (Build.VERSION.SDK_INT >= 23) {
        int permission = checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE);
        //如果權(quán)限拒絕图甜,請(qǐng)求權(quán)限
        if (permission == PackageManager.PERMISSION_DENIED) {
            requestPermissions(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},
                    WRITE_STORAGE_PERMISSION_CODE);
        }
    }
    ...
}
//類(lèi)似于活動(dòng)之間返回?cái)?shù)據(jù)的 onActivityResult() 方法。
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions,
                                       @NonNull int[] grantResults) {
    switch (requestCode) {
        case WRITE_STORAGE_PERMISSION_CODE:
            //判斷權(quán)限是否通過(guò)鳖眼,通過(guò)后執(zhí)行xxx操作
            if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                ...
            }
            break;
        default:
            super.onRequestPermissionsResult(requestCode, permissions, grantResults);
            break;
    }
}

自定義權(quán)限的格式:包名.permission.權(quán)限名
自定義權(quán)限需要在 Manifest 文件里使用<permission android:name="..." />語(yǔ)法 進(jìn)行注冊(cè)黑毅。
PackageManager.PERMISSION_GRANTED 表示權(quán)限允許;PackageManager.PERMISSION_DENIED表示權(quán)限拒絕具帮。

根據(jù)Uri獲取圖片:

private ImageView imageView;
...
@Override
protected void onCreate(Bundle savedInstanceState) {
    ...
    判斷權(quán)限...

    imageView = (ImageView) findViewById(R.id.imageView);
    //獲取圖片
    try {
        Intent intent = getIntent();
        Uri uri = intent.getData();
        Log.d("uri", "Path: " + uri.getPath());
        imageView.setImageURI(uri);
    } catch (Exception e) {
        e.printStackTrace();
    }
}
...
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末博肋,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子蜂厅,更是在濱河造成了極大的恐慌匪凡,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,723評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件掘猿,死亡現(xiàn)場(chǎng)離奇詭異病游,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)稠通,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,485評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén)衬衬,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人改橘,你說(shuō)我怎么就攤上這事滋尉。” “怎么了飞主?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,998評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵狮惜,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我碌识,道長(zhǎng)碾篡,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,323評(píng)論 1 279
  • 正文 為了忘掉前任筏餐,我火速辦了婚禮开泽,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘魁瞪。我一直安慰自己穆律,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,355評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布佩番。 她就那樣靜靜地躺著众旗,像睡著了一般。 火紅的嫁衣襯著肌膚如雪趟畏。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,079評(píng)論 1 285
  • 那天滩租,我揣著相機(jī)與錄音赋秀,去河邊找鬼利朵。 笑死,一個(gè)胖子當(dāng)著我的面吹牛猎莲,可吹牛的內(nèi)容都是我干的绍弟。 我是一名探鬼主播,決...
    沈念sama閱讀 38,389評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼著洼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼樟遣!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起身笤,我...
    開(kāi)封第一講書(shū)人閱讀 37,019評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤豹悬,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后液荸,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體瞻佛,經(jīng)...
    沈念sama閱讀 43,519評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,971評(píng)論 2 325
  • 正文 我和宋清朗相戀三年娇钱,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了伤柄。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,100評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡文搂,死狀恐怖适刀,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情煤蹭,我是刑警寧澤笔喉,帶...
    沈念sama閱讀 33,738評(píng)論 4 324
  • 正文 年R本政府宣布,位于F島的核電站疯兼,受9級(jí)特大地震影響然遏,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜吧彪,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,293評(píng)論 3 307
  • 文/蒙蒙 一待侵、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧姨裸,春花似錦秧倾、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,289評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至赡艰,卻和暖如春售淡,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,517評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工揖闸, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留揍堕,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,547評(píng)論 2 354
  • 正文 我出身青樓汤纸,卻偏偏與公主長(zhǎng)得像衩茸,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子贮泞,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,834評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容