安卓学习-界面-View和GroupView

所有的界面元素都是继承与View(如:ImageView 、Button等),布局继承于GroupView(如:LinearLayout等)

view的主要属性,这里直接是xml配置里写了,当然直接通过代码也是可以的

XML属性 相关方法 说明
android:alpha setAlpha(float alpha)

1. alpha值是从0~1的,比如0.5相当于透明50%,0相当于完全透明,1完全不透明

2. 3.0以下版本没有这个属性,因此只要设置了就相当于不透明,

3. 3.0版本以下可以用过view.getBackground().setAlpha(255)方法来设置透明度 0完全透明 255 不透明

 android:background  

setBackground(Drawable background);
setBackgroundColor(int color);
setBackgroundDrawable(Drawable background);
setBackgroundResource(int resid);

 该组件的背景色,可以使一个Drawable,color值或者Drawable的ID值,

setBackgroundDrawable新的SDK已经废弃了

 android:clickable  setClickable(boolean clickable)  是否可以点击,true可以点击,false不允许点击
 android:contentDescription  setContentDescription(CharSequence contentDescription)  组件的描述,也仅仅是描述而已
 android:drawingCacheQuality  setDrawingCacheQuality(int quality)

网上解释:

设置绘图时半透明质量。有以下值可设置:auto(默认,由框架决定)/high(高质量,使用较高的颜色深度,

消耗更多的内存/low(低质量,使用较低的颜色深度,但是用更少的内存)。

如果用代码设置用下面这3个静态变量

View.DRAWING_CACHE_QUALITY_AUTO
View.DRAWING_CACHE_QUALITY_LOW

View.DRAWING_CACHE_QUALITY_HIGH

看了半天也没明白说的是什么意思,但看到网上有两个例子都是截屏的

    //截组件
    public Bitmap getView(View view){
        // 设置使用缓存绘图
        view.setDrawingCacheEnabled(true);
     view.setDrawingCacheQuality(View.DRAWING_CACHE_QUALITY_AUTO);
// 建立缓存 view.buildDrawingCache(); //必须调用copy,否则会包Can't compress a recycled bitmap Bitmap tmp = view.getDrawingCache().copy(Config.RGB_565, false); view.setDrawingCacheEnabled(false);; return tmp; } //截屏 public Bitmap getView(Activity activity) { View view = activity.getWindow().getDecorView(); // 设置使用缓存绘图 view.setDrawingCacheEnabled(true);
     view.setDrawingCacheQuality(View.DRAWING_CACHE_QUALITY_AUTO);
// 建立缓存 view.buildDrawingCache(); //必须调用copy,否则会包Can't compress a recycled bitmap Bitmap tmp = view.getDrawingCache().copy(Config.RGB_565, false); view.setDrawingCacheEnabled(false); return tmp; }
 android:fadeScrollbars  setScrollbarFadingEnabled(boolean fadeScrollbars)  是否自动淡出滚动条,true:不拖动的时候,自动隐藏,false:一直显示着
 android:fadingEdge  setVerticalFadingEdgeEnabled(boolean verticalFadingEdgeEnabled)

 网上解释:

设置拉滚动条时 ,边框渐变的放向。none(边框颜色不变),horizontal(水平方向颜色变淡),

vertical(垂直方向颜色变淡)。

试不出来

 android:fadingEdgeLength  没找到

网上解释: 

用来设置边框渐变的长度

试不出来

 android:focusable  setFocusable(boolean focusable)  是否可以获得焦点,比如设置textedit为false,就无法选中输入文字了
 android:focusableInTouchMode  setFocusableInTouchMode(boolean focusableInTouchMode)

在触摸模式下是否可以获得焦点

试了下发现如果focusable已经是false了,那么这个参数就无效了

 android:id  setId(int id)  必须是@+id/*** 如:@+id/editText1,不要问我为什么
 android:isScrollContainer  setScrollContainer(boolean isScrollContainer)   是否可以作为滚动容器使用
 android:keepScreenOn  setKeepScreenOn(boolean keepScreenOn)  是否强制屏幕一直打开,除非是特殊设备,否则要被客户骂死,很快就没电了
 android:longClickable  setLongClickable(boolean longClickable)  是否可以相应长单击时间,就是手指一直按着
 android:minHeight  setMinimumHeight(int minHeight)  最小高度
 android:minWidth  setMinHeight(int minHeight) 最小宽度 
 android:nextFocusUp  setNextFocusUpId(int nextFocusUpId)

按向上键时获得焦点的组件ID 

这4个获得焦点的方式是模拟器上测试的,然后通过键盘的上下左右来操作是没问题,

但真实手机上压根就没这上下左右,不知如何测试

android:nextFocusDown  setNextFocusDownId(int nextFocusDownId) 按向下键时获得焦点的组件ID
android:nextFocusLeft setNextFocusLeftId(int nextFocusLeftId)  按向左键时获得焦点的组件ID
android:nextFocusRight setNextFocusRightId(int nextFocusRightId) 按向右键时获得焦点的组件ID
android:onClick setOnClickListener(OnClickListener l) 单击事件
android:padding  setPadding(int left, int top, int right, int bottom)

 在组件的四边设置填充区域,且填充在自己内部的

设置后

android:paddingTop 同上 上边 
android:paddingBottom 同上 下边 
android:paddingLeft 同上 左边 
android:paddingRight 同上 右边 
android:rotation  setRotation(float rotation)

组件的旋转角度,比如45度

android:rotationX  setRotationX(float rotation) 按X轴旋转,往里面转了45度
android:rotationY  setRotationY(float rotation) 按Y轴旋转 ,往右边转了45度,XY都设置45度
 android:saveEnabled  setEnabled(boolean enabled)

 默认是true的,如果是true那么在屏幕旋转的时候会保存值,比如:EditText,如果设置了true那么屏幕旋转时里面输入的内容还会保留,如果输入了false,则直接变空了

但是我试了下上面的rotation旋转,好像都没效果

android:scrollX setScrollX(int value) 以像素为单位设置水平方向滚动的的偏移值,在GridView中可看的这个效果。
android:scrollY setScrollY(int value) 以像素为单位设置垂直方向滚动的的偏移值,在GridView中可看的这个效果。
android:scaleX setScaleX(float scaleX) 水平方向缩放
android:scaleY setScaleY(float scaleY) 垂直方向缩放
android:scrollbarAlwaysDrawVerticalTrack    是否总是显示垂直滚动条的轨道,测试无效
 android:scrollbarAlwaysDrawHorizontalTrack    是否总是显示水平滚动条的轨道,测试无效
 android:scrollbarDefaultDelayBeforeFade  setScrollBarDefaultDelayBeforeFade(int scrollBarDefaultDelayBeforeFade) 值是秒,多少毫秒后滚动条自动隐藏
 android:scrollbarSize  setScrollBarSize(int scrollBarSize)  滚动条宽度
 android:scrollbarStyle

 setScrollBarStyle(int style)

style

View.SCROLLBARS_INSIDE_OVERLAY
View.SCROLLBARS_INSIDE_INSET
View.SCROLLBARS_OUTSIDE_OVERLAY
View.SCROLLBARS_OUTSIDE_INSET

scrollbar样式 

insideOverlay:默认值,表示在padding区域内并且覆盖在view上

insideInset:表示在padding区域内并且插入在view后面

下面2个效果好像都一样,推荐用outsideOverlay

outsideOverlay:表示在padding区域外并且覆盖在view上

outsideInset:表示在padding区域外并且插入在view后面

android:scrollbarThumbVertical  

垂直滚动条对应的drawable

android:scrollbarThumbHorizontal   水平滚动条对应的drawable
android:scrollbarTrackVertical  

垂直滚动条轨道对应的drawable(就是滚动条滑动下面的区域)

android:scrollbarTrackHorizontal   水平滚动条对应的drawable(就是滚动条滑动下面的区域)
android:scrollbars   定义滚动时显示滚动条 三种:none、horizontal、vertical ,不显示滚动条,不代表不能滚动
android:soundEffectsEnabled setSoundEffectsEnabled(boolean soundEffectsEnabled) 该组件被单击是是否有音效
android:tag setTag

给这个组件定义一个标记,类似id,但这个一般是文字说明,可以通过getTag获取值,

可以通过findViewWithTag(Object tag)获取这个组件

android:transformPivotX setPivotX(float pivotX)

这几个由于对图片处理不是很了解,只试了下效果

该组件旋转时X轴的坐标,一般和android:rotationX 配合使用

android:transformPivotY setPivotY(float pivotY) 该组件旋转时Y轴的坐标
android:translationX setTranslationX(float translationX) 设置该组件在X方向上的位移,比如比原位置向右偏移100
android:translationY setTranslationY(float translationY) 设置该组件在Y方向上的位移
android:visibility

setVisibility(int visibility)

View.VISIBLE

View.INVISIBLE

View.GONE

该组件是否显示,有3个参数

visible:一直显示

invisible:没显示,但是还占着位置

gone:什么都没有,和没创建一样

ViewGroup

android:layout_width  

//动态设置framelayout的高宽、边距
//获取布局
RelativeLayout ll=(RelativeLayout)findViewById(R.id.linearLayout1);
//创建LayoutParams,同时设置高宽
FrameLayout.LayoutParams layoutParam =
new FrameLayout.LayoutParams(ViewGroup.MATCH_PARENT, ViewGroup.MATCH_PARENT);
//设置边距左25、上100、右12、下50
layoutParam.setMargins(25, 100, 12, 50);
ll.setLayoutParams(layoutParam);

设置组件的宽度、高度

match_parent:使长度或宽度与父容器的长度和宽度相同

wrap_content:写死组件的宽度或者长度

android:layout_height
android:layout_marginTop

设置组件的上下左右边距

android:layout_marginTop="100dp"
android:layout_marginBottom="50dp"
android:layout_marginLeft="25dp"
android:layout_marginRight="12dp"

android:layout_marginBottom
android:layout_marginLeft
android:layout_marginRight
     

简单实例,点击切换图片

public class MainActivity extends Activity {

    //
    ImageView iv;
    // 显示图片索引
    int index = 0;
    // 图片资源
    int[] images = new int[] { R.drawable.pic1, R.drawable.pic2,
            R.drawable.pic3, R.drawable.pic4, R.drawable.pic5 };

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        iv = (ImageView) findViewById(R.id.imageView1);
        // 设置默认图片
        iv.setImageResource(images[index]);
        // 双击显示下一张图片
        iv.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {
                index = (index + 1) % images.length;
                iv.setImageResource(images[index]);
            }
        });
    }
}
原文地址:https://www.cnblogs.com/weijj/p/3894406.html