當前位置:首頁 » 安卓系統 » android獲取圖片信息

android獲取圖片信息

發布時間: 2023-10-07 15:59:11

① android獲取drawable裡面的圖片的id和名字的方法

你好,看樣子你可能是剛接觸Android不久,我先就你想實現的問題給你解答。你問題的本質是要在ImageView上展示圖片,你需要理解以下幾點:
1、ImageView這個組件可以直接設置Bitmap和Drawable來展示圖片,方法分別是setImageBitmap()和setImageDrawable()

2、根據(1)我們需要使用Drawable,Drawable可以由drawable目錄里的圖片資源生成,在這之前你需要理解一個概念,我們向drawable目錄放入一張圖片是需要命名的,比如圖片名為sun.png,系統會幫助我們自動生成這個圖片的id,如果想在java代碼中引用這個圖片就需要使用這個id,使用方式:R.drawable.sun。
3、使用系統方法將圖片轉換為Drawable。
Drawable drawable = getResources().getDrawable(R.drawable.sun);
imageView.setImageDrawable(drawable);
這樣就可以將圖片顯示到ImageView上。
這裡面使用的getResources()方法獲取的Resources對象可以幫助我們獲取很多資源文件,這個方法可以直接在Activity里使用,在其他地方需要使用Context對象調用。此外,Resources的getDrawable方法已被標記為過時,系統推薦使用兩個參數的方法。getDrawable(int id, Theme theme),我們不需要設置Theme可以給null。
4、題外話
1)現在圖片資源已經很少放在drawable目錄里,而是放在mipmap目錄,引用方式R.mipmap.xxx

2)你的問題涉及到id和名字,名字是你把圖片放到目錄時自己起的,命名要符合規范。而id則是由系統自動幫你生成,且是固定格式:R.drawable.xxx

② android中怎麼跳轉到相冊獲取照片並得到url

方法/步驟
1
如下圖所示,需要根據URL地址獲取圖片載入到圖中Anroid機器人所在的位置,這是運行前的效果:

2
首先需根據URL地址獲取圖片,如下所示,urladdr即為圖片地址,返回Drawable對象:
//download image from network using @urladdress
private Drawable loadImageFromNetwork(String urladdr) {
// TODO Auto-generated method stub
Drawable drawable = null;
try{
//judge if has picture locate or not according to filename
drawable = Drawable.createFromStream(new URL(urladdr).openStream(), "image.jpg");
}catch(IOException e){
Log.d("test",e.getMessage());
}
if(drawable == null){
Log.d("test","null drawable");
}else{
Log.d("test","not null drawable");
}
return drawable;
}
3
獲取到圖片後,需要更新主線程UI資源,考慮到時間以及界面反應延遲等,所以採用線程加以處理,如下圖所示:
// image
new Thread(new Runnable(){
Drawable drawable = loadImageFromNetwork(urladdress);
@Override
public void run(){
//post() is quite important,update pictures in UI main thread
image.post(new Runnable(){
@Override
public void run(){
//TODO Auto-generated method stub
image.setImageDrawable(drawable);
}
});
}

//download image from network using @urladdress
private Drawable loadImageFromNetwork(String urladdr) {
//... 略(如 1 中所示)
}
}).start(); //線程啟動
4
說明:在上述示例代碼中,image是ImageView類的一個對象,也就是APP中的一個顯示圖像組件,利用獲取到的圖片drawable去更新image,運行效果如下所示:

③ android 怎樣獲取照片的詳細信息

用手機自帶的相冊,打開圖片,點擊右上角的 (!)即可查詢圖片的詳細信息,希望我的回答能幫助到你

④ Android 簡單的圖片查看器

說明:在文件管理器中,可以使用這個app來打開圖片

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

支持的scaleType 屬性:

在打開圖片的Activity里需要必須設置以下三個屬性:

可以通過設置 mimeType 來關聯對應的類型,比如: mimeType="vedio/* 關聯視頻格式的文件等。

詳細可以參考: Android 常用 mimeType 表

讀取圖片,需要寫入到外部存儲器(SD卡)的許可權:
<uses-permissionandroid:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

如果是 API23 以上還需要動態許可權:

自定義許可權的格式: 包名.permission.許可權名
自定義許可權需要在 Manifest 文件里使用 <permission android:name="..." /> 語法 進行注冊。
PackageManager.PERMISSION_GRANTED 表示許可權允許; PackageManager.PERMISSION_DENIED 表示許可權拒絕。

⑤ 求: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>

⑥ android 存在資料庫中的動態圖片,如何讀取出來,顯示在ImageView中

實現的功能為從伺服器獲取圖片數據,在布局頁面上顯示。由於圖片的個數是不確定的,因此採用在布局頁面中定義多個ImageView來顯示圖片是不合理的。
(一)首先定義布局

android:id="@+id/id_layout_movie"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>
(二)載入圖片顯示時獲取到布局文件
RelativeLayout rl_Movie = (RelativeLayout) findViewById(R.id.id_layout_movie);
(三)依次循環伺服器獲取的圖片數據,一張一張設置圖片顯示的位置
//newWidth為圖片顯示的寬度,newHeight為圖片顯示的高度
RelativeLayout.LayoutParams lp1 = new RelativeLayout.LayoutParams( newWidth, newHeight);
設置lp1.leftMargin和lp1.topMargin的值
(四)最後設置rl_Movie.addView(iv, lp1)將圖片加入布局文件中

熱點內容
ts代碼編譯成umd 發布:2024-05-06 13:13:38 瀏覽:723
糧庫存儲糧種類 發布:2024-05-06 13:11:26 瀏覽:51
一般網路的dns伺服器是什麼 發布:2024-05-06 13:02:43 瀏覽:152
壓縮模具設計 發布:2024-05-06 13:02:04 瀏覽:561
逍遙模擬器如何配置網路 發布:2024-05-06 12:21:38 瀏覽:982
伺服器如何檢測硬體地址 發布:2024-05-06 12:12:35 瀏覽:738
伺服器在線訪問數由什麼決定 發布:2024-05-06 11:39:15 瀏覽:678
途觀21款哪個配置值得買 發布:2024-05-06 11:29:00 瀏覽:92
pythonspyder 發布:2024-05-06 11:15:53 瀏覽:167
線上伺服器如何資源監控 發布:2024-05-06 11:15:07 瀏覽:299