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" >