android布局背景圖片
A. Android中如何在布局文件中添加一個SurfaceView,就是實現背景有一個圖片再在背景上可以繪圖
不用布局文件,直接新建一個類實現SurfaceView即可,activity創建時載入新建的SurfaceView
B. 在android編程中怎麼插入背景圖片啊
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/qq"
>
上面的代碼是把drawable下的名字為qq的圖片作為背景
C. android開發中如何進行圖片布局的
參考google幫助文檔中的解釋,用hdpi,xdpi等來區分。
D. 為Android應用添加背景應該使用什麼樣的圖片格式,每個格式的的優勢在哪
原創回答:《轉載前請註明 from 網路知道-smile烏龜的回答》
先說結論;
1. 大的ViewGroup(Rl,FL ,LL,Cl等)布局背景應該設PNG
2. 小的view(Button,Recyclerview子item)的背景應該用WebP格式
3. 類似16*16的表情圖 也應該用WebP,也可考慮PNG
在研究圖片之前,首先搞明白三個問題:
像素點:計算機學科中,圖片由一個一個像素點組成,像素點有兩種ARGB和RGB,A,讀作「alpha」,中文「透明度」的含義。
圖片格式:JPEG 有損壓縮
優點 :壓縮過程中損失像素少(為什麼要壓縮?後文會說)
缺點:有損耗壓縮會使原始圖片數據質量下降(像素點變少了)
PNG無損壓縮
優點:更優化的網路傳輸顯示
(PNG圖像在瀏覽器上採用流式瀏覽,即使經過交錯處理的圖像會在完全下載之前提供瀏覽者一個基本的圖像內容,然後再逐漸清晰起來。它允許連續讀出和寫入圖像數據,這個特性很適合於在通信過程中顯示和生成圖像)
支持透明效果
體積小適合網路傳輸,請求服務端的圖片,節省流量
WebP 谷歌(google)開發的一種旨在加快圖片載入速度的圖片格式
優點:「在質量相同的情況下,WebP格式圖像的體積要比JPEG格式圖像小40%」
「WebP
的優勢體現在它具有更優的圖像數據壓縮演算法,能帶來更小的圖片體積,而且擁有肉眼識別無差異的圖像質量;同時具備了無損和有損的壓縮模式、Alpha
透明以及動畫的特性,在向JPEG 和 PNG 上的轉化效果都非常優秀、穩定和統一」
WebP應用比較優秀的:騰訊旗下 QQ空間客戶端,QQ客戶端,微信客戶端等
WebP圖片常用轉換工具:智圖,iSparta等
圖片壓縮:
以Android 為例,任何展示圖片的View控制項,載入圖片的時候,都需要為圖片申請內存,通常圖片越大,申請的內存越大,Android系統限制了每個App的運行內存,一般為32MB-200M左右,為了優化App性能,必須對圖片進行壓縮:壓縮圖片尺寸
通過壓縮圖片尺寸,解決App運行時申請過多內存,被系統殺死的情況。
總結: JPEG是有損壓縮,PNG是無損壓縮,
當UI切了一張匹配實際手機屏幕大小的圖片時 可以使用JPEG(不需要壓縮圖片)
當UI給的圖片過大,需要程序員手動壓縮時,考慮PNG
當UI給的圖片過於離譜,不可理喻,導致APK包過大,用戶反映耗費流量過多時,考慮使用WebP,而且WebP同PNG,JPEG是可以互轉的
(PS:請求自服務端的圖片資源,其實也是UI給的)
參考和補充:
圖片格式,JPEG PNG WebP from網路
http://isux.tencent.com/introction-of-webp.html
http://www.cnblogs.com/xiangism/p/5311314.html
WebP圖片常用轉換工具:智圖,iSparta 等
官方WebP解析庫https://github.com/alexey-pelykh/webp-android-backport
E. Android開發,動態設置Activity的layout背景圖片問題
在那個Activity的xml文件中,最外層的布局控制項加id,然後在java文件中初始化,然後.setBackGround()
F. android設置背景圖片
教你如何設置背景圖片
xml文件設置背景圖片中:
任意一個控制項,button imageView 或layout,在其的xml屬性設置中,添加
[java] view plain
android:background="@drawable/bg"
即可實現設置其背景圖片為bg.
其中bg.bnp圖片存放在drawable目錄下。
drawable目錄下存放大小圖標共用的圖片。drawable-hdpi中存放240 WVGA800 的模擬器或板子用的圖片。drawable-mdpi存放對應的小圖片
[java] view plain
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/pic"/>
同樣,用src屬性,也可設置imageView的圖片為pic.png
java代碼中設置或更改一個控制項的背景圖片:
[java] view plain
Resources resources = getContext().getResources();
Drawable btnDrawable = resources.getDrawable(R.drawable.layout_bg);
layout.setBackgroundDrawable(btnDrawable);
程序中,動態修改layout的背景圖片,用setBackgroundDrawable()函數實現。設置其背景圖片為 layout_bg.png
修改imageView1的背景圖片為imageView2的背景圖片:
imageView2.getDrawable()可獲得圖片2的背景。值為Drawable類型
imageView1.setImageDrawable(drawable); 設置imageView1的背景圖片
即:
[java] view plain
imageView1.setImageDrawable(imageView2.getDrawable());
G. 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。
H. android怎麼設置自適應大小的背景圖片
需要給你的ImageView布局加上Android:adjustViewBounds="true"
<ImageView android:id="@+id/test_image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:scaleType="fitXY"
android:adjustViewBounds="true"
android:layout_gravity="center"
android:contentDescription="@string/app_name"
android:src="@drawable/ic_launcher" />
然後,在代碼里設置ImageView.最大寬度和最大高度,因為adjustViewBounds屬性只有在設置了最大高度和最大寬度後才會起作用
int screenWidth = getScreenWidth(this);
ViewGroup.LayoutParams lp = testImage.getLayoutParams();
lp.width = screenWidth;
lp.height = LayoutParams.WRAP_CONTENT;
testImage.setLayoutParams(lp);
testImage.setMaxWidth(screenWidth);
testImage.setMaxHeight(screenWidth * 5); 這里其實可以根據需求而定,我這里測試為最大寬度的5倍
I. android 怎樣給activity添加背景圖
設置Activity圖片背景
Android(Activity)設置背景圖片方法:
xml布局中用andriod:background = "@drawable/bgimage"或者在代碼中使用layout.setBackgroundResource(resId)
其中「bgimage」是放在res/drawable/目錄下的需要設置成背景的圖片。
方法一:在main.xml 文件中添加屬性:android:background="@drawable/bgimage",其中
bgimage是drawable目錄下的圖片文件名,圖片會自動縮放至全屏。
如:
<LinearLayout xmlns:android=""
xmlns:tools=""
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.tsv1_0000_0001.skin.Select"
android:background="@drawable/base" >