zoukankan      html  css  js  c++  java
  • 安卓学习-界面-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]);
                }
            });
        }
    }
  • 相关阅读:
    键盘的出现于隐藏(解决键盘弹出时会覆盖文本框的问题,代码实现)
    UI入门指引
    OC 面试问题汇总
    通知、block
    协议和代理
    plist文件、NSUserDefault 对文件进行存储的类、json格式解析
    归档NSKeyedArchiver解归档NSKeyedUnarchiver与文件管理类NSFileManager (文件操作)
    Foundation框架下的常用类:NSNumber、NSDate、NSCalendar、NSDateFormatter、NSNull、NSKeyedArchiver
    选择器
    内存管理
  • 原文地址:https://www.cnblogs.com/weijj/p/3894406.html
Copyright © 2011-2022 走看看