Android面试之组件

时间:2022-11-04 17:50:20
Android面试之组件 1.请简单描述一下android:gravity和android:layout_gravity的区别: android:gravity属性用于设置组件内容相对组件的位置,如可以设置TextView组件中的文本水平中举和垂直居中。 android:layout_gravity属性用于设置当前组件相对于父组件的位置。
2.请说出android:layout_weight属性的功能,并举例说明该属性的用法。 android:layout_weight属性用于设置当前组件在水平或垂直方向所占空间的大小。例如:有三个按钮,要求在水平方向各占1/3的长度,就可以将这3个组件的android:layout_weight属性设为任意相等的正整数,如android:layout_weight=“1” 但是要注意:android:layout_width属性的值必须为match_parent.
3.如何实现图像的半透明度?请说出过程,并且附上代码。 * 使用Paint.setAlpha方法设置图像的半透明都,基本原理是先使用Bitmap对象装载图像,然后再View.onDraw方法中使用Canvas.drawBitmap方法将Bitmap对象绘制到当前的view上。核心代码如下:
<span style="font-size:18px;color:#000000;">package com.example.demo;

import java.io.InputStream;

import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.Rect;
import android.util.AttributeSet;
import android.widget.ImageView;

public class NewImageView extends ImageView {

public NewImageView(Context context) {
super(context);
// TODO Auto-generated constructor stub
}

public NewImageView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
// TODO Auto-generated constructor stub
}

public NewImageView(Context context, AttributeSet attrs) {
super(context, attrs);
// TODO Auto-generated constructor stub
}

InputStream is = getResources().openRawResource(R.drawable.icon1);
// 装载图像
Bitmap bitmap = BitmapFactory.decodeStream(is);

@Override
protected void onDraw(Canvas canvas) {
// TODO Auto-generated method stub
Paint paint = new Paint();
paint.setAlpha(110);
// 绘制半透明的图像
canvas.drawBitmap(bitmap,
new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight()),
new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight()), paint);

}
}
</span>


*可以在不透明的图像上覆盖一侧半透明的膜(可以用半透明的ImageView来实现)。布局代码如下:
<span style="font-size:18px;color:#000000;"><FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >

<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:src="@drawable/icon1" />

<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#EFFF" />

</FrameLayout></span>


4.ProgressBar的进度条颜色是否可以修改?如果可以修改的,写出具体代码。 可以改变ProgressBar的进度条颜色,ProgressBar有三种颜色:背景颜色,第一级进度条颜色,第二级进度条颜色。可以使用图层列表(layer-list)资源修改这3种颜色。首先需要准备3个纯色的图像,然后再res/drawable目录中建立一个progressbar.xml文件,并且配置一下内容。如下:
<span style="font-size:18px;color:#000000;"><?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<!-- 设置背景颜色 -->
<item android:id="@android:id/background" android:drawable="@drawable/one"></item>
<!-- 第二级颜色 -->
<item android:id="@android:id/secondaryProgress" android:drawable="@drawable/three"></item>
<!-- 设置第一级颜色 -->
<item android:id="@android:id/progress" android:drawable="@drawable/two"/>

</layer-list></span>


(待续)