這是我學(xué)習(xí)Android時(shí)做的一個小程序,程序主要功能是實(shí)現(xiàn)一個迷你相冊的功能,可以在虛擬機(jī)上看到很不錯的效果。
創(chuàng)新互聯(lián)公司專注于寶塔企業(yè)網(wǎng)站建設(shè),響應(yīng)式網(wǎng)站開發(fā),商城網(wǎng)站定制開發(fā)。寶塔網(wǎng)站建設(shè)公司,為寶塔等地區(qū)提供建站服務(wù)。全流程按需制作,專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,創(chuàng)新互聯(lián)公司專業(yè)和態(tài)度為您提供的服務(wù)
我設(shè)置屏幕的大小為800*600
/*
*ImageSwitcherGallery.java
*/
package android.study_layout;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewGroup.LayoutParams;
import android.view.Window;
import android.view.animation.AnimationUtils;
import android.widget.*;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ViewSwitcher.ViewFactory;
public class ImageSwitcherGallery extends Activity implements
OnItemSelectedListener, ViewFactory {
private ImageSwitcher image_switcher;
private Gallery gallery;
private Integer[] mThumbIds = { R.drawable.a1, R.drawable.a2,
R.drawable.a3, R.drawable.a4, R.drawable.a5,
};
private Integer[] mImageIds = { R.drawable.a1, R.drawable.a2,
R.drawable.a3, R.drawable.a4, R.drawable.a5, };
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.image_switcher_gallery);
image_switcher = (ImageSwitcher) findViewById(R.id.switcher);
image_switcher.setFactory(this);
image_switcher.setInAnimation(AnimationUtils.loadAnimation(this,
android.R.anim.fade_in));
image_switcher.setOutAnimation(AnimationUtils.loadAnimation(this,
android.R.anim.fade_out));
gallery = (Gallery) findViewById(R.id.gallery);
gallery.setAdapter(new ImageAdapter(this));
gallery.setOnItemSelectedListener(this);
}
@Override
public View makeView() {
ImageView image = new ImageView(this);
image.setBackgroundColor(0xFF000000);
image.setScaleType(ImageView.ScaleType.FIT_XY);
image.setLayoutParams(new ImageSwitcher.LayoutParams(
LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
return image;
}
public class ImageAdapter extends BaseAdapter {
public ImageAdapter(Context c) {
mContext = c;
}
public int getCount() {
return mThumbIds.length;
}
public Object getItem(int position) {
return position;
}
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
ImageView image = new ImageView(mContext);
image.setImageResource(mThumbIds[position]);
image.setAdjustViewBounds(true);
image.setLayoutParams(new Gallery.LayoutParams(
LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
return image;
}
private Context mContext;
}
@Override
public void onItemSelected(AdapterView? parent, View view, int position,
long id) {
ImageSwitcher image_switcher = (ImageSwitcher) findViewById(R.id.switcher);
image_switcher.setImageResource(mImageIds[position]);
}
@Override
public void onNothingSelected(AdapterView? parent) {
}
}
xml文件
?xml version="1.0" encoding="utf-8"?
RelativeLayout
xmlns:android=""
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
ImageSwitcher
android:id="@+id/switcher"
android:layout_width="match_parent"
android:layout_height="450dip"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
/
Gallery
android:id="@+id/gallery"
android:layout_width="fill_parent"
android:layout_height="120dip"
android:background="#55000000"
android:layout_alignParentLeft="true"
android:layout_alignParentBottom="true"
android:gravity="center_vertical"
android:spacing="30dip"
/
/RelativeLayout
相冊缺少權(quán)限。
如果在android11上還是用原有的路徑,相冊就沒有操作和訪問權(quán)限,所以后續(xù)存放文件位置需要更新。解決方法只需要代碼寫入把透明網(wǎng)絡(luò)圖替換為白色背景并顯示,就可以進(jìn)行公共相冊保存。
還可以申請MANAGE最高的文件讀取權(quán)限,通過操作我的選擇,把Result進(jìn)行回調(diào),打開系統(tǒng)相冊在打開系統(tǒng)裁剪生成本地File,通過存儲的Uri獲取File,就可以解決。
1.拍照 (對于7.0以上的版本,不在允許直接訪問uri)
`
若不指定輸出路徑intent.putExtra(MediaStore.EXTRA_OUTPUT, getTempUri(srcActivity)); 在onActivityResult()中,通過
`
可以拿到uri,但獲得的圖片是被壓縮過的。若指定intent.putExtra(MediaStore.EXTRA_OUTPUT, uri);輸出路徑,則此處的intent為null,但可以使用我們存的uri讀取照片,此時(shí)的照片沒有被壓縮。
2.從相冊中讀取照片, 方法:
`
`
即使設(shè)置 intent.putExtra(MediaStore.EXTRA_OUTPUT, getTempUri(srcActivity));輸出路徑,仍然不能從此路徑中讀取,只能在onActivityForResult()中通過event.uri = intent.getData();方式獲得圖片uri。
此種現(xiàn)象也好理解,拍照時(shí)產(chǎn)生新的圖片,自然可根據(jù)設(shè)置的uri進(jìn)行圖片保存,而讀取相冊時(shí),圖片已經(jīng)在目錄中不能轉(zhuǎn)移到自己設(shè)定的uri中。
Androidmanifest.xml中
`
在 res/xml/provider_paths.xml
`
?xml version="1.0" encoding="utf-8"?
paths
external-path name="JDTobs" path=""/
files-path name="name" path="path" /
cache-path name="name" path="path" / external-path name="name" path="path" /
external-files-path name="name" path="path" /
external-cache-path name="name" path="path" / /paths `
讀取uri
最近一直被Android10相關(guān)的適配搞得焦頭爛額,之前也聽說過android10中的所有的視頻,音頻以及圖片等資源為了統(tǒng)一的管理,統(tǒng)一放在一個共有的文件下,也就是所謂的沙箱。看了一下其他人寫的文章,也提供了一種簡單粗暴的方式也就是在清單文件application下配置#android:requestLegacyExternalStorage="true"#,但如果android11出來又得適配了,android11是禁止除了共有文件夾下新建視頻,音頻以及圖片等文件。不然就會報(bào)找不到文件相關(guān)的錯誤,好了說到底我們還是得花點(diǎn)時(shí)間去適配android10以上的沙箱適配。
進(jìn)入正題,接下來我們就來適配Android10相關(guān)的拍照以及選擇相冊并兼容android10以下的絕大部分的適配。
進(jìn)入系統(tǒng)相冊的操作都是一樣的這里就不贅述:
主要的還是要對返回的data進(jìn)行處理,也就是把uri轉(zhuǎn)換成文件File的路徑path
當(dāng)然了拍照和位圖Bitmap相關(guān)的適配是一樣的。
7.0以上Android版本的路徑配置
第一步
@xml/file_camera_paths 文件配置
拍照首先需要申請拍照權(quán)限
申請完后調(diào)用camera就可以拍照,拍照主要就是在調(diào)用相機(jī)的時(shí)需要自己去配置文件存儲路徑。
回調(diào)處理這里我就不贅述了 主要是對Android10以上關(guān)于圖片配置相關(guān)的處理
既然關(guān)于Android 10那么我們也講一下關(guān)于定位方面的適配,Android10以上需要在清淡文件中添加一個新的定位權(quán)限
就我個人所知道的安卓系統(tǒng)的話,它的所有照片都存儲在一個叫做。DC im的一個文件夾里面。這個文件講的話,你可以通過幾種方式找到一般安卓手機(jī)的話,他都會有一個文件管理的圖標(biāo)。
你點(diǎn)擊進(jìn)去,以后。然后選擇一個手機(jī)的選項(xiàng),然后在內(nèi)部存儲里你就可以找到這個文件夾。
現(xiàn)在的安卓系統(tǒng)比較高級,他都會在后面?zhèn)渥⒁粋€相冊的選項(xiàng)。然后最后在這個選項(xiàng)里面基本上所有的圖片都在你的。這個文件夾里面包括你使用照相機(jī)照的圖片,甚至是你的截圖都是保存在這個文件夾里面的。
而且現(xiàn)在這個文件夾真的是比較人性化了。安卓系統(tǒng)人性化的方面就是你可以獲得這方面的權(quán)限,可以直接的方便的查看而蘋果手機(jī)不行就只有安卓手機(jī)可以。
主相冊:DCIM,photo(s)看手機(jī),只要不是這兩個文件夾里都?xì)w為其他相冊
下載個“文件管理”軟件----圖片分類----即可看到所有圖片了!
新聞名稱:Android相冊,android相冊縮略圖
轉(zhuǎn)載來于:http://vcdvsql.cn/article14/dsdicde.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供面包屑導(dǎo)航、網(wǎng)站改版、關(guān)鍵詞優(yōu)化、搜索引擎優(yōu)化、網(wǎng)站設(shè)計(jì)公司、品牌網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)