Android笔记(一)

it2023-05-31  74

1.1、View和ViewGroup的区别

View:所有可视化控件的父类,提供组件描绘和时间处理方法 ViewGroup: View类的子类,可以拥有子控件,可以看作是容器 Android UI中的控件都是按照这种层次树的结构堆叠得 而创建UI布局的方式有两种, 自己在Java里写代码或者通过XML定义布局

1.2、布局

1.2.1、LinerLayout(线性布局)

1.基本属性

android:orientation: 布局中的组件排列方式 horizontal(水平),vertical(竖直,默认)两种方式。 android:gravity: 控制组件所包含的子元素的对齐方式,可多个组合,如(left|buttom)。 android:layout_gravity: 控制组件在父容器的对齐方式。 android:layout_width: 布局的宽度,通常不直接写长度,用wrap_content(组件实际大小)和fill_parent(填充父类)和match_parent(匹配父类)。 android:layout_height: 布局高度,用法同上。 android🆔 为组建设置一个id,在java文件中可以通过findViewById(id)找到。 android:background: 为组件设置一个背景图片,或者直接用颜色

2.weight(权重)属性

该属性是等比例划分地区的。需要划分谁,谁为0,weight按照比例即可 java中设置weight属性:

setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT, 1));

3.为LinearLayout设置分割线

1、直接在布局中添加一个view

<View android:layout_width="match_parent" android:layout_height="1px" android:background="#000000" />

2、第二种则是使用LinearLayout的一个divider属性 android:divider: 为LinearLayout设置分割线图片 android:showDividers: 设置分割线所在的位置,有四个值none(无),middle(中间),begining(开始),end(结束)。 android:dividerPadding: 设置分割线的padding

1.2.2、RelativeLayout(相对布局)

1、基本属性

android:gravity: 设置容器内组件的对其方式 android:ignoreGravity: 设置了该属性为true的属性的组件,将不受gravity属性的影响

2、根据父容器定位

android:layout_alignParentLeft: 左对齐 android:layout_alignParentRight: 右对齐 android:layout_alignParentTop: 顶部对齐 android:layout_alignParentBotton: 底部对齐 android:layout_centerHorizontal: 水平局中 android:layout_centerVertical: 垂直局中 android:layout_centerInParent: 中间位置

3、根据兄弟组件定位

android:layout_toLeftOf: 参考组件的左边 android:layout_toRight: 参考组件的右边 android:layout_above: 参考组件的上方 android:layout_below: 参考组件的下方 android:layout_alignTop: 对齐参考组件的上方 android:layout_alignBottom: 对齐参考组件的下方 android:layout_alignLeft: 对齐参考组件的左边 android:layout_alignRight: 对齐参考组件的右边

4、margin(偏移)

android:layout_margin: 设置组件上下左右的偏移量 android:layout_marginLeft: 设置组建离左边的偏移距离 android:layout_marginRight: 设置组建离右边的偏移距离 android:layout_marginTop: 设置组建离上方的偏移距离 android:layout_marginBottom: 设置组建离下方的偏移距离

5、padding(填充)

android:layout_padding: 向内部元素的上下左右填充一定的边距 android:layout_paddingLeft: 往内部元素的 左边填充一定的边距 android:layout_paddingRight: 往内部元素的 右边填充一定的边距 android:layout_paddingTop: 往内部元素的 上方填充一定的边距 android:layout_paddingBottom: 往内部元素的 下方填充一定的边距

1.2.3、TableLayout(表格布局)

android:collapseColumns: 设置需要被隐藏的列的序号 android:shrinkColumns: 设置允许被收缩的列的列序号 android:stretchColumns: 设置运行被拉伸的列的列序号

以上这三个属性的列号都是从0开始算的,比如shrinkColunmns = “2”,对应的是第三列! 可以设置多个,用逗号隔开比如"0,2",如果是所有列都生效,则用"*"号即可 除了这三个常用属性,还有两个属性,分别就是跳格子以及合并单元格,这和HTML中的Table类似:

android:layout_column=“2”: 表示的就是跳过第二个,直接显示到第三个格子处,从1开始算的! android:layout_span=“4”: 表示合并4个单元格,也就说这个组件占4个单元格

1.3.1 TextView(文本框)详解

1、单位

dp(dip) : device independent pixels(设备独立像素). 不同设备有不同的显示效果,这个和设备硬件有关,一般我们为了支持WVGA、HVGA和QVGA 推荐使用这个,不依赖像素。 px : pixels(像素). 不同设备显示效果相同,一般我们HVGA代表320x480像素,这个用的比较多。 ** pt** : point,是一个标准的长度单位,1pt=1/72英寸,用于印刷业,非常简单易用; sp : scaled pixels(放大像素). 主要用于字体显示best for textsize。

2、基础属性

android:id: 为TextView设置一个组件id,根据id,我们可以在Java代码中通过findViewById()的方法获取到该对象,然后进行相关属性的设置,又或者使用RelativeLayout时,参考组件用的也是id! android:layout_width: 组件的宽度,一般写:wrap_content或者match_parent(fill_parent) 前者是控件显示的内容多大,控件就多大,而后者会填满该控件所在的父容器;当然也可以设置成特定的大小,比如我这里为了显示效果,设置成了200dp。 android:layout_height: 组件的高度,内容同上。 android:gravity: 设置控件中内容的对齐方向,TextView中是文字,ImageView中是图片等等。 android:text: 设置显示的文本内容,一般我们是把字符串写到string.xml文件中,然后通过@String/xxx取得对应的字符串内容的,这里为了方便我直接就写到""里,不建议这样写!!! android:textColor: 设置字体颜色,同上,通过colors.xml资源来引用,别直接这样写! android:textStyle: 设置字体风格,三个可选值:normal(无效果),bold(加粗),italic(斜体) android:textSize: 字体大小,单位一般是用sp! android:background: 控件的背景颜色,可以理解为填充整个控件的颜色,可以是图片.

3、带边框的TextView

<solid android:color = “xxx”>这个是设置背景颜色的 <stroke android:width = “xdp” android:color=“xxx”> 这个是设置边框的粗细,以及边框颜色的 <padding androidLbottom = “xdp”…> 这个是设置边距的 <corners android:topLeftRadius=“10px”…>这个是设置圆角的 <gradient>这个是设置渐变色的,可选属性有: startColor:起始颜色 endColor:结束颜色 centerColor:中间颜色 angle:方向角度,等于0时,从左到右,然后逆时针方向转,当angle = 90度时从下往上 type:设置渐变的类型

4、带图片(drawableXxx)的TextView

drawableXxx;可以设置四个方向的图片: drawableTop(上),drawableButtom(下),drawableLeft(左),drawableRight(右)

Drawable[] drawable = txtZQD.getCompoundDrawables( );// 获得四个不同方向上的图片资源,数组元素依次是:左上右下的图片 drawable[1].setBounds(100, 0, 200, 200); //接着获得资源后,可以调用setBounds设置左上右下坐标点,比如这里设置了代表的是: 长是:从离文字最左边开始100dp处到200dp处 宽是:从文字上方0dp处往上延伸200dp! txtZQD.setCompoundDrawables(drawable[0], drawable[1], drawable[2], drawable[3]);//为TextView重新设置drawable数组!没有图片可以用null代替哦! PS:另外,从上面看出我们也可以直接在Java代码中调用setCompoundDrawables为 TextView设置图片!

5、SpannableString&SpannableStringBuilder定制文本

BackgroundColorSpan 背景色 ClickableSpan 文本可点击,有点击事件 ForegroundColorSpan 文本颜色(前景色) MaskFilterSpan 修饰效果,如模糊(BlurMaskFilter)、浮雕(EmbossMaskFilter) MetricAffectingSpan 父类,一般不用 RasterizerSpan 光栅效果 StrikethroughSpan 删除线(中划线) SuggestionSpan 相当于占位符 UnderlineSpan 下划线 AbsoluteSizeSpan 绝对大小(文本字体) DynamicDrawableSpan 设置图片,基于文本基线或底部对齐。 ImageSpan 图片 RelativeSizeSpan 相对大小(文本字体) ReplacementSpan 父类,一般不用 ScaleXSpan 基于x轴缩放 StyleSpan 字体样式:粗体、斜体等 SubscriptSpan 下标(数学公式会用到) SuperscriptSpan 上标(数学公式会用到) TextAppearanceSpan 文本外貌(包括字体、大小、样式和颜色) TypefaceSpan 文本字体 URLSpan 文本超链接

6、实现跑马灯效果的TextView

<TextView android:id="@+id/txtOne" android:layout_width="match_parent" android:layout_height="wrap_content" android:textSize="18sp" android:singleLine="true" android:ellipsize="marquee" android:marqueeRepeatLimit="marquee_forever" android:focusable="true" android:focusableInTouchMode="true" android:text="哈哈哈哈哈哈哈哈哈红红火火恍恍惚惚呵呵呵呵呵呵呵呵呵呵~"/>

7、其他用法

android:textScaleX: 控制字体水平方向的缩放,默认值1.0f,值是float。 Java中setScaleX(2.0f); android:lineSpacingExtra: 设置行间距,如"3dp"。 android:lineSpacingMultiplier: 设置行间距的倍数,如"1.2"。 android:singleLine = “false” 自动换行通过,默认为 false。

1.3.2 EditText(输入框)详解

android:hint="默认提示文本" android:textColorHint="颜色" android:selectAllOnFocus=“true” 点击输入框获得焦点后,获取到输入框中所有的文本内容。

1、限制EditText输入类型

文本类型,多为大写、小写和数字符号 android:inputType=“none” android:inputType=“text” android:inputType=“textCapCharacters” android:inputType=“textCapWords” android:inputType=“textCapSentences” android:inputType=“textAutoCorrect” android:inputType=“textAutoComplete” android:inputType=“textMultiLine” android:inputType=“textImeMultiLine” android:inputType=“textNoSuggestions” android:inputType=“textUri” android:inputType=“textEmailAddress” android:inputType=“textEmailSubject” android:inputType=“textShortMessage” android:inputType=“textLongMessage” android:inputType=“textPersonName” android:inputType=“textPostalAddress” android:inputType=“textPassword” android:inputType=“textVisiblePassword” android:inputType=“textWebEditText” android:inputType=“textFilter” android:inputType=“textPhonetic”数值类型 android:inputType=“number” android:inputType=“numberSigned” android:inputType=“numberDecimal” android:inputType=“phone”//拨号键盘 android:inputType=“datetime” android:inputType=“date”//日期键盘 android:inputType=“time”//时间键盘

android:minLines=“3” : 设置最小行的行数 android:maxLines=“3”: 或者设置EditText最大的行数 android:textScaleX=“1.5” : 设置字与字的水平间隔 android:textScaleY=“1.5”: 设置字与字的垂直间隔 android:capitalize 默认none,sentences:仅第一个字母大写。**words:**每一个单词首字母大小,用空格区分单词。**characters:**每一个英文字母都大写。

margin相关属性增加组件相对其他控件的距离,比如android:marginTop = “5dp” padding增加组件内文字和组件边框的距离,比如android:paddingTop = “5dp”EditText获得焦点与清除焦点的: edit.requestFocus(); //请求获取焦点 edit.clearFocus(); //清除焦点

1.3.3 Button(按钮)与ImageButton(图像按钮)

我们可以设置的属性: drawable:引用的Drawable位图,我们可以把他放到最前面,就表示组件的正常状态~ state_focused:是否获得焦点 state_window_focused:是否获得窗口焦点 state_enabled:控件是否可用 state_checkable:控件可否被勾选,eg:checkbox state_checked:控件是否被勾选 state_selected:控件是否被选择,针对有滚轮的情况 state_pressed:控件是否被按下 state_active:控件是否处于活动状态,eg:slidingTab state_single:控件包含多个子控件时,确定是否只显示一个子控件 state_first:控件包含多个子控件时,确定第一个子控件是否处于显示状态 state_middle:控件包含多个子控件时,确定中间一个子控件是否处于显示状态 state_last:控件包含多个子控件时,确定最后一个子控件是否处于显示状态

1.3.4 ImageView(图像视图)

1.src属性和background属性的区别: 在API文档中我们发现ImageView有两个可以设置图片的属性,分别是:src和background 常识: ①background通常指的都是背景,而src指的是内容!! ②当使用src填入图片时,是按照图片大小直接填充,并不会进行拉伸 而使用background填入图片,则是会根据ImageView给定的宽度来进行拉伸 Java代码中设置blackground和src属性: 前景(对应src属性):setImageDrawable( ); 背景(对应background属性):setBackgroundDrawable( );

adjustViewBounds属性,用于设置缩放时是否保持原图长宽比! 单独设置不起作用,需要配合maxWidth和maxHeight属性一起使用!而后面这两个属性 也是需要adjustViewBounds为true才会生效的~ android:maxHeight:设置ImageView的最大高度 android:maxWidth:设置ImageView的最大宽度android:scaleType用于设置显示的图片如何缩放或者移动以适应ImageView的大小 Java代码中可以通过imageView.setScaleType(ImageView.ScaleType.CENTER);来设置~ 可选值如下: fitXY:对图像的横向与纵向进行独立缩放,使得该图片完全适应ImageView,但是图片的横纵比可能会发生改变 fitStart:保持纵横比缩放图片,知道较长的边与Image的编程相等,缩放完成后将图片放在ImageView的左上角 fitCenter:同上,缩放后放于中间; fitEnd:同上,缩放后放于右下角; center:保持原图的大小,显示在ImageView的中心。当原图的size大于ImageView的size,超过部分裁剪处理。 centerCrop:保持横纵比缩放图片,知道完全覆盖ImageView,可能会出现图片的显示不完全 centerInside:保持横纵比缩放图片,直到ImageView能够完全地显示图片 matrix:默认值,不改变原图的大小,从ImageView的左上角开始绘制原图, 原图超过ImageView的部分作裁剪处理

1.3.5.RadioButton(单选按钮)&Checkbox(复选框)

RadioButton(单选按钮) 如题单选按钮,就是只能够选中一个,所以我们需要把RadioButton放到RadioGroup按钮组中,从而实现 单选功能!先熟悉下如何使用RadioButton,一个简单的性别选择的例子: 另外我们可以为外层RadioGroup设置orientation属性然后设置RadioButton的排列方式,是竖直还是水平~ setOnClickListener事件监听器,每次点击的话遍历一次RadioGroup判断哪个按钮被选中我们可以通过下述方法获得RadioButton的相关信息! getChildCount( )获得按钮组中的单选按钮的数目; getChinldAt(i):根据索引值获取我们的单选按钮 isChecked( ):判断按钮是否选中 CheckBox(复选框) 1.为每个CheckBox添加事件:setOnCheckedChangeListener 2.弄一个按钮,在点击后,对每个checkbox进行判断:isChecked();

1.3.6 开关按钮ToggleButton和开关Switch

ToggleButton(开关按钮) 可供我们设置的属性: android:disabledAlpha:设置按钮在禁用时的透明度 android:textOff:按钮没有被选中时显示的文字 android:textOn:按钮被选中时显示的文字 另外,除了这个我们还可以自己写个selector,然后设置下Background属性即可Switch(开关) 可供我们设置的属性: android:showText:设置on/off的时候是否显示文字,boolean android:splitTrack:是否设置一个间隙,让滑块与底部图片分隔,boolean android:switchMinWidth:设置开关的最小宽度 android:switchPadding:设置滑块内文字的间隔 android:switchTextAppearance:设置开关的文字外观,暂时没发现有什么用… android:textOff:按钮没有被选中时显示的文字 android:textOn:按钮被选中时显示的文字 android:textStyle:文字风格,粗体,斜体写划线那些 android:track:底部的图片 android:thumb:滑块的图片 android:typeface:设置字体,默认支持这三种:sans, serif, monospace;除此以外还可以使用 其他字体文件(*.ttf),首先要将字体文件保存在assets/fonts/目录下,不过需要在Java代码中设置: Typeface typeFace =Typeface.createFromAsset(getAssets(),“fonts/HandmadeTypewriter.ttf”); textView.setTypeface(typeFace);

1.3.7 ProgressBar(进度条)

常用属性详解: android:max:进度条的最大值 android:progress:进度条已完成进度值 android:progressDrawable:设置轨道对应的Drawable对象 android:indeterminate:如果设置成true,则进度条不精确显示进度 android:indeterminateDrawable:设置不显示进度的进度条的Drawable对象 android:indeterminateDuration:设置不精确显示进度的持续时间 android:secondaryProgress:二级进度条,类似于视频播放的一条是当前播放进度,一条是缓冲进度,前者通过progress属性进行设置!

对应的再Java中我们可调用下述方法: getMax():返回这个进度条的范围的上限 getProgress():返回进度 getSecondaryProgress():返回次要进度 incrementProgressBy(int diff):指定增加的进度 isIndeterminate():指示进度条是否在不确定模式下 setIndeterminate(boolean indeterminate):设置不确定模式下

1.3.8 SeekBar(拖动条)

1.SeekBar基本用法 Java代码里只要setXxx即可: android:max=“100” //滑动条的最大值 android:progress=“60” //滑动条的当前值 android:secondaryProgress=“70” //二级滑动条的进度 android:thumb = “@mipmap/sb_icon” //滑块的drawable

接着要说下SeekBar的事件了,SeekBar.OnSeekBarChangeListener 我们只需重写三个对应的方法: onProgressChanged:进度发生改变时会触发 onStartTrackingTouch:按住SeekBar时会触发 onStopTrackingTouch:放开SeekBar时触发

1.3.9 RatingBar(星级评分条)

相关属性:

android:isIndicator:是否用作指示,用户无法更改,默认false android:numStars:显示多少个星星,必须为整数 android:rating:默认评分值,必须为浮点数 android:stepSize: 评分每次增加的值,必须为浮点数

除了上面这些,还有两种样式供我们选择咧,但是不建议使用他们分别是: style="?android:attr/ratingBarStyleSmall" style="?android:attr/ratingBarStyleIndicator"

事件处理: 只需为RatingBar设置OnRatingBarChangeListener事件,然后重写下onRatingChanged()方法即可!

1.3.10 ScrollView(滚动条)

1.滚动到底部: 我们可以直接利用ScrollView给我们提供的:fullScroll()方法: scrollView.fullScroll(ScrollView.FOCUS_DOWN);滚动到底部 scrollView.fullScroll(ScrollView.FOCUS_UP);滚动到顶部

另外用这玩意的时候要小心异步的玩意,就是addView后,有可能还没有显示完, 如果这个时候直接调用该方法的话,可能会无效,这就需要自己写handler来更新了 2.设置滚动的滑块图片 这个更加简单: 垂直方向滑块:android:scrollbarThumbVertical 水平方向滑块:android:scrollbarThumbHorizontal 3.隐藏滑块 好吧,这个好像没什么卵用:

方法有两种: 1.android:scrollbars=“none” 2.Java代码设置:scrollview.setVerticalScrollBarEnabled(false);

4.设置滚动速度: 这个并没有给我们提供可以直接设置的方法,我们需要自己继承ScrollView,然后重写一个 public void fling (int velocityY)的方法:

@Override public void fling(int velocityY) { super.fling(velocityY / 2); //速度变为原来的一半 }

1.3.11 Date & Time组件

1.TextClock(文本时钟) Attribute NameRelated MethodDescriptionandroid:format12HoursetFormat12Hour(CharSequence)设置12时制的格式android:format24HoursetFormat24Hour(CharSequence)设置24时制的格式android:timeZonesetTimeZone(String)设置时区 2.AnalogClock(模拟时钟) android:dial 表背景 android:hand_hour 表时针 android:hand_minute 表分时针3.Chronometer(计时器)4.DatePicker(日期选择器) android:calendarTextColor : 日历列表的文本的颜色 android:calendarViewShown:是否显示日历视图 android:datePickerMode:组件外观,可选值:spinner,calendar 前者效果如下,默认效果是后者 android:dayOfWeekBackground:顶部星期几的背景颜色 android:dayOfWeekTextAppearance:顶部星期几的文字颜色 android:endYear:去年(内容)比如2010 android:firstDayOfWeek:设置日历列表以星期几开头 android:headerBackground:整个头部的背景颜色 android:headerDayOfMonthTextAppearance:头部日期字体的颜色 android:headerMonthTextAppearance:头部月份的字体颜色 android:headerYearTextAppearance:头部年的字体颜色 android:maxDate:最大日期显示在这个日历视图mm / dd / yyyy格式 android:minDate:最小日期显示在这个日历视图mm / dd / yyyy格式 android:spinnersShown:是否显示spinner android:startYear:设置第一年(内容),比如19940年 android:yearListItemTextAppearance:列表的文本出现在列表中。 android:yearListSelectorColor:年列表选择的颜色5.TimePicker(时间选择器)6.CalendarView(日历视图) android:firstDayOfWeek:设置一个星期的第一天 android:maxDate :最大的日期显示在这个日历视图mm / dd / yyyy格式 android:minDate:最小的日期显示在这个日历视图mm / dd / yyyy格式 android:weekDayTextAppearance:工作日的文本出现在日历标题缩写
最新回复(0)