㈠ android gallery3D 問題
其實跟電腦上的cache特性一樣,如果圖片不多的話,第一次讀取cache失效就將圖片放到cache上,如果命中的話,。。。都命中了,沒事了。
如果圖片很多,量很大的話,如果你讀取第100張圖片,不管是否命中cache,系統自動的將第100張圖片的前面和後面的幾張都存入cache,方便下一次可能會用到。因為人們習慣看某張圖片後,會接著看上一張或下一張,這就是局部性原理。
當然了,我說的這是一邊讀取一邊使用的情況。cache嘛,任何地方都有這個類似的性質:少則直接撞進來,多則利用局部性原理。
㈡ 怎樣更換android3D原生相冊更換相冊封面
android3D的原廠自帶相冊 ,太慢了 ,換 快圖 這個軟體 蠻好用的
㈢ G11如何弄漂亮的相冊 看到別人的手機 瀏覽自己的相片 時 感覺是3D效果的
那個是3D相冊,所有android手機通用
㈣ 求:android 獲取系統相冊圖片並顯示在當前頁面的代碼
先初始化;
注意自定義 的
private final String IMAGE_TYPE = "image/*";private final int IMAGE_CODE = 0;
private void setImage() {
Intent getAlbum = new Intent(Intent.ACTION_GET_CONTENT); getAlbum.setType(IMAGE_TYPE); startActivityForResult(getAlbum, IMAGE_CODE);}
這里使用Intent獲得相冊圖片數據,並返回原來界面;
這里說明一下
startActivityForResult(getAlbum, IMAGE_CODE);
補充{
startActivityForResult與startActivity的不同之處在於:
1、startActivity( )
僅僅是跳轉到目標頁面,若是想跳回當前頁面,則必須再使用一次startActivity( )。
2、startActivityForResult( )
可以一次性完成這項任務,當程序執行到這段代碼的時候,假若從T1Activity跳轉到下一個Text2Activity,而當這個Text2Activity調用了finish()方法以後,程序會自動跳轉回T1Activity,並調用前一個T1Activity中的onActivityResult( )方法。
}
startActivityForResult(getAlbum, IMAGE_CODE);
這里採用startActivityForResult來做跳轉,此處的IMAGE_CODE實質是0為一個依據,可以寫其他的值,但一定要>=0
然後重寫onActivityResult用於接收剛剛得到的數據
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
Bitmap bm = null; ContentResolver resolver = getContentResolver(); if (requestCode == IMAGE_CODE) { try {
Uri originalUri = data.getData(); bm = MediaStore.Images.Media.getBitmap(resolver, originalUri); imgShow.setImageBitmap(bm); } catch (IOException e) {
e.printStackTrace(); }
}
補充{
ContentProvider-----數據提供給第三方應用程序使用時使用
因為在Android系統裡面,資料庫是私有的。一般情況下外部應用程序是沒有許可權讀取其他應用程序的數據。如果你想公開你自己的數據,你有兩個選擇:你可以創建你自己的內容提供器(一個ContentProvider子類)或者你可以給已有的提供器添加數據-如果存在一個控制同樣類型數據的內容提供器且你擁有寫的許可權
}
這里是創建一個新的內容提供器,然後在Activity當中通過getContentResolver()可以得到當前應用的 ContentResolver實例
if (requestCode == IMAGE_CODE) {
resultCode為回傳的標記這句話是在確認是否回傳的是你所需要的;如果是就執行try;不然就執行catch (IOException e) {
e.printStackTrace();}先說這里當try語句中出現異常是時,會執行catch中的語句,IOException e也就是實例化Exception類型的對象。e是此對象引用名稱。然後e(引用)會自動調用Exception類中指定的方法,也就出現了e.printStackTrace() ;。printStackTrace()方法的意思是:在命令行列印異常信息在程序中出錯的位置及原因。
try {
Uri originalUri = data.getData(); bm = MediaStore.Images.Media.getBitmap(resolver, originalUri); imgShow.setImageBitmap(bm);接收數據處理數據並顯示照片。
然後進行測試。
另附源碼:
MainActivity:
package com.example.administrator.myapplication1;import android.graphics.BitmapFactory;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import java.io.IOException;import android.net.Uri;import android.os.Bundle;import android.provider.MediaStore;import android.app.Activity;import android.content.ContentResolver;import android.content.Intent;import android.graphics.Bitmap;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.ImageView;public class MainActivity extends AppCompatActivity { private final String IMAGE_TYPE = "image/*"; private final int IMAGE_CODE = 0; private Button choose=null; private ImageView imgShow; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); init();} private void init() { choose=(Button) findViewById(R.id.button1); imgShow=(ImageView) findViewById(R.id.imgShow); choose.setOnClickListener(listener); } private OnClickListener listener=new OnClickListener(){ @Override public void onClick(View v) {
setImage(); }
}; private void setImage() {
Intent getAlbum = new Intent(Intent.ACTION_GET_CONTENT); getAlbum.setType(IMAGE_TYPE); startActivityForResult(getAlbum, IMAGE_CODE); } protected void onActivityResult(int requestCode, int resultCode, Intent data) {
Bitmap bm = null; ContentResolver resolver = getContentResolver(); if (requestCode == IMAGE_CODE) { try {
Uri originalUri = data.getData(); bm = MediaStore.Images.Media.getBitmap(resolver, originalUri); imgShow.setImageBitmap(bm); } catch (IOException e) {
e.printStackTrace(); }
}
}
}
layout:activity_main.xml:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="選擇照相" android:layout_marginRight="190dp" android:layout_marginTop="8dp" android:paddingBottom="2dp" android:background="#aabbcc" /> <ImageView android:id="@+id/imgShow" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_margin="15dip" /></LinearLayout>
㈤ unity3D 中獲取android相冊中的照片(大小2.5M)存在嚴重耗時問題(具體見下面的描述)
crop一下,指定一下系統輸出的圖片bitmap是切剪過的,而且你傳過去是可以指定輸出圖寬高的
㈥ Android怎麼調用系統相冊將選中的圖片設置為布局的背景,有沒有案例或源碼
Android中調用系統相機來拍攝照片的代碼,如下:
1、首先設置Uri獲取判斷以及相機請求Code
public final int TYPE_TAKE_PHOTO = 1;//Uri獲取類型判斷
public final int CODE_TAKE_PHOTO = 1;//相機RequestCode
2、調起系統相機
Intent takeIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
Uri photoUri = getMediaFileUri(TYPE_TAKE_PHOTO);
takeIntent.putExtra(MediaStore.EXTRA_OUTPUT, photoUri);
startActivityForResult(takeIntent, CODE_TAKE_PHOTO);
3、封裝獲取Uri代碼
public Uri getMediaFileUri(int type){
File mediaStorageDir = new File(Environment.(Environment.DIRECTORY_PICTURES), "相冊名字");
if (!mediaStorageDir.exists()) {
if (!mediaStorageDir.mkdirs()) {
return null;
}
}
//創建Media File
String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
File mediaFile;
if (type == TYPE_TAKE_PHOTO) {
mediaFile = new File(mediaStorageDir.getPath() + File.separator + "IMG_" + timeStamp + ".jpg");
} else {
return null;
}
return Uri.fromFile(mediaFile);
}
4、相機拍照完畢後獲取返回數據,並在頁面顯示照片
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode) {
case CODE_TAKE_PHOTO:
if (resultCode == RESULT_OK) {
if (data != null) {
if (data.hasExtra("data")) {
Log.i("URI", "data is not null");
Bitmap bitmap = data.getParcelableExtra("data");
imageView.setImageBitmap(bitmap);//imageView即為當前頁面需要展示照片的控制項,可替換
}
} else {
Log.i("URI", "Data is null");
Bitmap bitmap = BitmapFactory.decodeFile(fileUri.getPath());
imageView.setImageBitmap(bitmap);//imageView即為當前頁面需要展示照片的控制項,可替換
}
}
break;
}
}
特殊:
一般情況,以上代碼在Android7.0以下,也就是api<24時,運行是沒有任何問題的。可是當targetSdkVersion變成24及其以上並且在android7.0(及以上版本)系統運行時,會拋出異常:FileUriExposedException。
㈦ android 圖庫源碼在哪個文件夾中
android/apps/package/Gallery3D/
㈧ 3d旋轉相冊代碼源碼背景為什麼會重復
原因還是在於職責的分配與分離做得不夠好。職責的分配不準確,就可能導致代碼結構不清晰,而職責的分離做得不好,就可能導致代碼的重復。
㈨ 誰說android不夠炫 絕美的圖片瀏覽軟體--超越iphone效果Gallery 3D!!敬獻各
搜索一下這個
3D相冊(Gallery 3D + 倒影效果) GalleryFlow
第一個就是了