androidres圖片
android源碼主要位於兩個文件夾中。
src文件夾,存放java代碼。
res文件夾存放資源,如res->layout存放布局文件;res->drawable存放圖片文件等。
android代碼主要就存在於這兩個文件夾下
② 怎麼知道Android系統中每個文件的作用
只能掌握重點吧。
1.根目錄:
src目錄---存放源代碼文件
gen目錄---ADT插件生成的文件,一般不作修改
assets目錄---存放資源文件目錄,不會在R.java中生成ID
res目錄---存放資源文件目錄,這裡面的每個文件或值都會在R.java中生成一個ID(變數)
AndroidManifest.xml---整個應用程序配置文件,儲存一些 包名,版本號,程序圖標,程序標簽
default.properties---檢查版本文件,自動生成,不能修改(修改將被刪除)。
2.重點目錄及文件
res/drawable-xxxx是存放圖片的目錄,每個圖片需要准備三種解析度版本.
drawable-hdpi---存放高解析度版本
drawable-ldpi---存放中解析度版本
drawable-mdpi---存放低解析度版
res/layout目錄---放置布局文件(xml文件),每個Activity對應一個XML文件
res/value目錄--放置存儲值的文件(xml)
R.java文件
drawable類---給圖片生產的ID
layout類---給布局文件生成ID的
string類---給string.xml裡面鍵值對生成的ID
main.xml文件
控制Activity中控制項的位置,每個Activity對應一個此布局文件
string.xml
存放鍵值對,一般用在程序的多語言版本切換(多個文件,鍵一樣,值不同)
res目錄下的文件都會自動在R.java中生成資源id,並且除了res/raw文件夾外都會被編譯為二進制文件,res/raw文件夾下的內容會保持原樣。res目錄不能隨意創建子目錄。可以通過getResources的相關方法結合其他類進行訪問。
assets目錄支持任意深度的子目錄,其下的文件不會被編譯為二進制(保持原樣),並且不會生成資源id,必須使用/assets開始的相對路徑按照文件的方式進行訪問。可以使用AssetManager 結合其他類進行訪問。
結合R.java的相關內部類和欄位,res/drawable-xxxx目錄可以根據系統解析度自動使用不同的圖片資源。例如高解析度的放在res/drawable-hdpi目錄,低解析度放在res/drawbale-ldpi目錄中,在各個dpi的子目錄中放置好不同解析度的圖片,在使用R.drawable.resourceid的方式訪問時,系統會根據設備屏幕的解析度自動選擇合適的圖像進行展示。
③ Andriod編程中代碼編寫的Activity中的Layout添加圖片
首先在你的helloworld程序對應的layout配置文件(res/layout/下的XXX.xml文件)中告臘添雹衫加一個按鈕,具體代碼如下
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android=""
android:id="@+id/layout"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<!-- 下面這段就是添加的button -->
<Button android:id="@+id/button"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="change background" />
</LinearLayout>
然後在你的繼承Activity類的java類中添加按鈕的事源友腔件監聽以及事件處理,代碼如下:
public class 你的helloworld類名 extends Activity implements OnClickListener {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.你的layout文件名);
//下面的代碼用於為按鈕注冊一個監聽
findViewById(R.id.frame_layout).setOnClickListener(new OnClickListener() {
//下面的代碼用於處理按鈕點擊後的事件
public void onClick(View v) {
//下面的代碼用於使背景變色
findViewById(R.id.layout).setBackgroundColor(Color.BLUE);
}
});
}
}
④ android如何實現圖片預覽
eoe 里邊有很多例子 http://www.eoeandroid.com/forum.php?mod=viewthread&tid=245578
⑤ 求: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 studio 中如何批量引入圖片。一大堆圖片!
圖片重命名好名字(帶順序,如pic1~2~3~4..)
扔進res的drawablet文件夾
看好R文件裡面圖片的值。
建一個專門處理Map的java。在裡面把圖片的值和自己定義一串名字。
然後在要用到的時候直接new出一個Map對象。一連串的取出圖片的名字。
或者建一個value的xml。在裡面定義key-value。然後在for循環裡面→引用getResources().getDrawable("xx")方法直接取出來,xx是文件的key值。
⑦ android應用程序的資源文件放在那裡的啊
Android除了提供/res目錄存放資源文件外,在/assets目錄也會提供存放資源文件,如下圖片:
publicStringgetFromAssets(StringfileName){
try{
InputStreamReaderinputReader=newInputStreamReader(getResources().getAssets().open(fileName));
BufferedReaderbufReader=newBufferedReader(inputReader);
Stringline="";
StringResult="";
while((line=bufReader.readLine())!=null)
Result+=line;
returnResult;
}catch(Exceptione){
e.printStackTrace();
}
}
⑧ android中怎麼實現動態設置背景圖片的功能,我在網上搜到的只能設置到當前的頁面,並不能實現設置到全部
當關閉重新運行,它又會自動跳回原始的背景圖片。
在開發過程中,由於使用模擬器測試了程序,在首次運行後會將res文件夾下的圖片資源文件(如drawable-hdpi、drawable-ldpi和drawable-mdpi)拷貝到bin文件夾下。在替換資源圖片後,eclipse並不清楚是否有圖片改變,所以會使用原來bin下的res文件夾中的資源文件進行打包,而圖片用的還是第一次eclipse所拷貝進去的文件,所以當運行程序後會發現替換資源圖片在程序中沒起作用。
解決辦法:每次運行前,清理項目
動態設置背景圖片代碼
privateinti=0;//全局變數定義,初始化
//list數組接收到從文件中讀取到的數據
List<String>list=readTxt.getDierguanResource();
//changeBack這個函數用來動態設置背景圖片
publicvoidchangeBack(intbackground){
main=(LinearLayout)findViewById(R.id.shizi);
Stringa=list.get(background);
//獲取到的背景圖片名as(圖片存到res/drawable文件下)
Stringas=a.split("")[1];
//動態獲取圖片getResources().getIdentifier(as,"drawable",getPackageName())
intresID=getResources().getIdentifier(as,"drawable",getPackageName());
//設置頁面背景setBackgroundResource()
main.setBackgroundResource(resID);
}
if(i>=0&&i<list.size()){
changeBack(i);
}