如何查询网站开发语言,义务加工网,如何做好网站推广工作,免费 网站管理系统文章目录一 文本显示1.1 文本设置的两种方式1.2 常见字号单位类型2.2 设置文本的颜色三 视图基础3.1 设置视图的宽高3.2 设置视图的间距3.3 设置视图的对齐方式四常用布局4.1 线性布局LinearLayout4.2 相对布局RelativeLayout4.3 网格布局GridLayout4.4 滚动视图ScrollView五 按…
文章目录一 文本显示1.1 文本设置的两种方式1.2 常见字号单位类型2.2 设置文本的颜色三 视图基础3.1 设置视图的宽高3.2 设置视图的间距3.3 设置视图的对齐方式四常用布局4.1 线性布局LinearLayout4.2 相对布局RelativeLayout4.3 网格布局GridLayout4.4 滚动视图ScrollView五 按钮触控5.1 按钮控件Button5.2 点击事件和长按事件5.3 禁用与恢复按钮六 图像显示6.1 图像视图ImageView6.2 图像按钮ImageButton6.3 同时展示文本与图像本文主要对简单控件的只是进行总结以便回顾和学习还是建议多动手
一 文本显示
1.1 文本设置的两种方式
设置文本内容的两种方式一种是在XML文件中通过属性android:text设置文本另一种是在Java代码中调用文本视图对象的setText方法设置文本TextViewandroid:idid/tv_helloandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:textstring/hello /// 获取名为tv_hello的文本视图
TextView tv_hello findViewById(R.id.tv_hello);
tv_hello.setText(你好世界); // 设置tv_hello的文字内容
tv_sp.setTextSize(30); // 设置tv_sp的文本大小Android Studio推荐把字符串放到名为string的地方位于res/values目录下的strings.xml resourcesstring namehello你好世界/string
/resources1.2 常见字号单位类型
常见的字号单位主要有px、dp、sp 3种
px px是手机屏幕的最小显示单位它与设备的显示屏有关。一般来说同样尺寸的屏幕比如6英寸手机如果看起来越清晰则表示像素密度越高以px计量的分辨率也越大。 dp dpdip指的是与设备无关的显示单位它只与屏幕的尺寸有关。一般来说同样尺寸的屏幕以dp计量的分辨率是相同的比如同样是6英寸手机无论它由哪个厂家生产其分辨率换算成dp单位相同。 sp sp的原理跟dp差不多但它专门用来设置字体大小。手机在系统设置里可以调整字体的大小小、标准、大、超大。设置普通字体时同数值dp和sp的文字看起来一样大如果设置为大字体用dp设置的文字没有变化用sp设置的文字就变大了。 字体大小采用不同单位的话显示的文字大小各不相同。例如30px、30dp、30sp这3个字号在不同手机上的显示大小有所差异。有的手机像素密度较低一个dp相当于两个px此时30px等同于15dp有的手机像素密度较高一个dp相当于3个px此时30px等同于10dp。假设某个App的内部文本使用字号30px则该App安装到前一部手机的字体大小为15dp安装到后一部手机的字体大小为10dp显然后一部手机显示的文本会更小。 补充
名称解释pxPixel像素也称为图像元素是作为图像构成的基本单元单个像素的大小并不固定跟随屏幕大小和像素数量的关系变化一个像素点为1px。Resolution分辨率是指屏幕的垂直和水平方向的像素数量如果分辨率是 1920*1080 那就是垂直方向有 1920 个像素水平方向有 1080 个像素Dpi像素密度是指屏幕上每英寸1英寸 2.54 厘米距离中有多少个像素点。Density密度是指屏幕上每平方英寸2.54 ^ 2 平方厘米中含有的像素点数量。Dip / dp (设备独立像素)也可以叫做dp长度单位同一个单位在不同的设备上有不同的显示效果具体效果根据设备的密度有关计算规则以一个 4.95 英寸 1920 * 1080 的 nexus5 手机设备为例Dpi : 计算直角边像素数量 1920210802220221920^21080^22202^2192021080222022勾股定理。计算 DPI2202/4.954452202 / 4.95 4452202/4.95445。得到这个设备的 DPI 为 445445445每英寸的距离中有 445 个像素。 Density 上面得到每英寸中有 445445445 像素那么 density 为每平方英寸中的像素数量应该为 4452198025445^21980254452198025 Dip 所有显示到屏幕上的图像都是以 px 为单位Dip 是我们开发中使用的长度单位最后他也需要转换成px计算这个设备上 1dip1dip1dip 等于多少 px pxdip×dpi/160px dip \times dpi /160 pxdip×dpi/160 结论 对于相同分辨率的手机屏幕越大同DP的组件占用屏幕比例越小。对于相同尺寸的手机即使分辨率不同同DP的组件占用屏幕比例也相同。dp的UI效果只在相同尺寸的屏幕上相同如果屏幕尺寸差异过大则需要重做dp适配。 2.2 设置文本的颜色
在Java代码中调用setTextColor方法即可设置文本颜色具体在Color类中定义了12种颜色
// 从布局文件中获取名为tv_code_system的文本视图
TextView tv_code_system findViewById(R.id.tv_code_system);
// 将tv_code_system的文字颜色设置系统自带的绿色
tv_code_system.setTextColor(Color.GREEN);XML文件无法引用Color类的颜色常量为此Android制定了一套规范的编码标准将色值交由透明度alpha和RGB三原色红色red、绿色green、蓝色blue联合定义。该标准又有八位十六进制数与六位十六进制数两种表达方式。 例如八位编码FFEEDDCC中FF表示透明度EE表示红色的浓度DD表示绿色的浓度CC表示蓝色的浓度。透明度为FF表示完全不透明为00表示完全透明。RGB三色的数值越大表示颜色越浓也就越暗数值越小表示颜色越淡也就越亮。RGB亮到极致就是白色暗到极致就是黑色。至于六位十六进制编码则有两种情况它在XML文件中默认不透明等价于透明度为FF而在代码中默认透明等价于透明度为00。
三 视图基础
3.1 设置视图的宽高
App控件通常也是长方形状控件宽度通过属性android:layout_width表达控件高度通过属性android:layout_height表达宽高的 取值主要有下列3种 match_parent表示与上级视图保持一致。上级视图的尺寸有多大当前视图的尺寸就有多大。wrap_content表示与内容自适应。对于文本视图来说内部文字需要多大的显示空间当前视图就要占据多大的尺寸。但最宽不能超过上级视图的宽度一旦超过就要换行最高不能超过上级视图的高度一旦超过就会隐藏。以dp为单位的具体尺寸如300dp表示宽度或者高度就是这么大。 建议宽高属性直接在xml布局文件中设置 3.2 设置视图的间距
使用android:layout_margin一次性设置四周的间距。每个TextView标签都携带新的属性android:layout_marginTop5dp该属性的作用是让当前视图与上方间隔一段距离。layout_margin不单单用于文本视图还可用于所有视图包括各类布局和各类控件。因为不管布局还是控件它们统统由视图基类View派生而来而layout_margin正是View的一个通用属性所以View的子子孙孙都能使用layout_margin。在View的大家族中视图组ViewGroup尤为特殊它既是View的子类又是各类布局的基类。布局下面能容纳其他视图而控件却不行这正源自ViewGroup的组装特性。视图家族的依赖继承关系 padding也是View的一个通用属性它用来设置视图的内部间距并且padding也提供了paddingTop、paddingBottom、paddingLeft、paddingRight四个方向的距离属性。同样是设置间距layout_margin指的是当前视图与外部视图包括上级视图和平级视图之间的距离而padding指的是当前视图与内部视图包括下级视图和内部文本之间的距离。
3.3 设置视图的对齐方式
在XML文件中通过属性android:layout_gravity可以指定当前视图的对齐方向。 当属性值为top时表示视图朝上对齐为bottom时表示视图朝下对齐为left时表示视图靠左对齐为right时表示视图靠右对齐。如果希望视图既朝上又靠左则用竖线连接top与left此时属性标记为android:layout_gravitytop|left如果希望视图既朝下又靠右则用竖线连接bottom与right此时属性标记android:layout_gravitybottom|right。 注意layout_gravity规定的对齐方式指的是当前视图往上级视图的哪个方向对齐并非当前视图的内部对齐。若想设置内部视图的对齐方向则需由当前视图的android:gravity指定该属性一样拥有top、bottom、left、right 4种取值及其组合。android:gravity与layout_gravity的不同之处在于layout_gravity设定了当前视图相对于上级视图的对齐方式而gravity设定了下级视图相对于当前视图的对齐方式前者决定了当前视图的位置而后者决定了下级视图的位置
四常用布局
4.1 线性布局LinearLayout
内部视图之间的排列顺序是固定的要么从左到右排列要么从上到下排列。在XML文件中LinearLayout通过属性android:orientation区分两种方向其中从左到右排列叫作水平方向属性值为horizontal从上到下排列叫作垂直方向属性值为vertical。如果LinearLayout标签不指定具体方向则系统默认该布局为水平方向排列也就是默认android:orientationhorizontallayout_weight 一旦设置了layout_weight属性值便要求layout_width填0dp或者layout_height填0dp。如果layout_width填0dp则layout_weight表示水平方向的权重下级视图会从左往右分割线性布局如果layout_height填0dp则layout_weight表示垂直方向的权重下级视图会从上往下分割线性布局
4.2 相对布局RelativeLayout
相对布局名为RelativeLayout因为下级视图的位置是相对位置所以得有具体的参照物才能确定最终位置。如果不设定下级视图的参照物那么下级视图默认显示在RelativeLayout内部的左上角。
4.3 网格布局GridLayout
网格布局默认从左往右、从上到下排列它先从第一行从左往右放置下级视图塞满之后另起一行放置其余的下级视图如此循环往复直至所有下级视图都放置完毕。为了确定能够容纳几行几列网格布局的android:columnCount与android:rowCount两个属性其中columnCount指定了网格的列数即每行能放多少个视图rowCount指定了网格的行数即每列能放多少个视图。
4.4 滚动视图ScrollView
与线性布局类似滚动视图也分为垂直方向和水平方向两类其中垂直滚动视图名为ScrollView水平滚动视图名为HorizontalScrollView。这两个滚动视图的使用并不复杂主要注意以下3点 垂直方向滚动时layout_width属性值设置为match_parentlayout_height属性值设置为wrap_content水平方向滚动时layout_width属性值设置为wrap_contentlayout_height属性值设置为match_parent滚动视图节点下面必须且只能挂着一个子布局节点否则会在运行时报错Caused by:java.lang.IllegalStateExceptionScrollView can host only one direct child
五 按钮触控
5.1 按钮控件Button
按钮Button也是一种基础控件。因为Button是由TextView派生而来所以文本视图拥有的属性和方法包括文本内容、文本大小、文本颜色等按钮控件均能使用。不同的是Button拥有默认的按钮背景而TextView默认无背景Button的内部文本默认居中对齐而TextView的内部文本默认靠左对齐。按钮还要额外注意textAllCaps与onClick两个属性 textAllCaps属性 对于Button来说不管text属性设置的是大写字母还是小写字母按钮控件都默认转成大写字母显示。为此需要给Button标签补充textAllCaps属性该属性默认为true表示全部转为大写如果设置为false则表示不转为大写。 onClick属性 onClick属性便用来接管用户的点击动作该属性的值是个方法名也就是当前页面的Java代码存在对应的方法当用户点击按钮时就自动调用该方法。
5.2 点击事件和长按事件
在实际开发中不推荐使用Button标签的onClick属性而是在代码中给按钮对象注册点击监听器。监听器专门监听控件的动作行为。只有控件发生了指定的动作监听器才会触发开关去执行对应的代码逻辑。点击监听器需要实现接口View.OnClickListener并重写onClick方法补充点击事件的处理代码再由按钮调用setOnClickListener方法设置监听器对象。
// 从布局文件中获取名为btn_click_single的按钮控件
Button btn_click_single findViewById(R.id.btn_click_single);
// 给btn_click_single设置点击监听器一旦用户点击按钮就触发监听器的onClick方法
btn_click_single.setOnClickListener(new MyOnClickListener());
//定义一个点击监听器它实现了接口View.OnClickListener
class MyOnClickListener implements View.OnClickListener {Overridepublic void onClick(View v) { // 点击事件的处理方法String desc String.format(%s 您点击了按钮%s,DateUtil.getNowTime(), ((Button)v).getText());tv_result.setText(desc); // 设置文本视图的文本内容}
}5.3 禁用与恢复按钮 在某些情况希望暂时禁止点击操作譬如用户在注册的时候有的网站要求用户必须同意指定条款而且至少浏览10秒之后才能点击注册按钮。 按钮先后拥有两种状态即不可用状态与可用状态它们在外观和功能上的区别如下 不可用按钮按钮不允许点击即使点击也没反应同时按钮文字为灰色。可用按钮按钮允许点击点击按钮会触发点击事件同时按钮文字为正常的黑色。 button属性android:enabled该属性值为true时表示启用按钮即允许点击按钮该属性值为false时表示禁用按钮即不允许点击按钮。在Java代码中则可通过setEnabled方法设置按钮的可用状态true表示启用false表示禁用。 分别注册点击监听器
// 因为按钮控件的setOnClickListener方法来源于View基类所以也可对findViewById得到的视图直
接设置点击监听器
findViewById(R.id.btn_enable).setOnClickListener(this);
findViewById(R.id.btn_disable).setOnClickListener(this);
btn_test findViewById(R.id.btn_test); // 获取名叫btn_test的按钮控件
btn_test.setOnClickListener(this); // 设置btn_test的点击监听器重写页面的onClick方法分别处理3个按钮的点击事件
Override
public void onClick(View v) { // 点击事件的处理方法// 由于多个控件都把点击监听器设置到了当前页面因此公共的onClick方法内部需要区分来自于哪个按钮if (v.getId() R.id.btn_enable) { // 点击了按钮“启用测试按钮”btn_test.setTextColor(Color.BLACK); // 设置按钮的文字颜色btn_test.setEnabled(true); // 启用当前控件} else if (v.getId() R.id.btn_disable) { // 点击了按钮“禁用测试按钮”btn_test.setTextColor(Color.GRAY); // 设置按钮的文字颜色btn_test.setEnabled(false); // 禁用当前控件} else if (v.getId() R.id.btn_test) { // 点击了按钮“测试按钮”String desc String.format(%s 您点击了按钮%s,DateUtil.getNowTime(), ((Button)v).getText());tv_result.setText(desc); // 设置文本视图的文本内容}
}六 图像显示
6.1 图像视图ImageView
显示图像则用到图像视图ImageView。由于图像通常保存为单独的图片文件因此需要先把图片放到res/drawable目录然后再去引用该图片的资源名称。比如现在有张图片名为app.png那么XML文件通过属性android:src设置图片资源属性值格式形如drawable/不含扩展名的图片名称ImageViewandroid:idid/iv_scaleandroid:layout_widthmatch_parentandroid:layout_height220dpandroid:srcdrawable/apple /设置图片的缩放类型属性android:scaleType
XML中的缩放类型ScaleType类中的缩放类型说明fitCenterFIT_CENTER保持宽高比例缩放图片使其位于视图中间centerCropCENTER_CROP缩放图片使其充满视图超出部分会被裁剪并位于视图中间centerlnsideCENTER_INSIDE保持宽高比例缩小图片使之位于视图中间centerCENTER保持图片原尺寸并使其位于视图中间只缩小不放大fitXYFIT_XY缩放图片使其正好填满视图图片可能被拉伸变形fitStartFIT_START保持宽高比例缩放图片使其位于视图上方或左侧fitEndFIT_END保持宽高比例缩放图片使其位于视图下方或右侧
6.2 图像按钮ImageButton ImageButton是显示图片的图像按钮。虽然ImageButton号称图像按钮但它并非继承Button而是继承了ImageView所以凡是ImageView拥有的属性和方法ImageButton统统拿了过来区别在于ImageButton有个按钮背景。 尽管ImageButton源自ImageView但它毕竟是个按钮呀按钮家族常用的点击事件和长按事件ImageButton全都没落下。不过ImageButton和Button之间除了名称不同还有下列差异\ Button既可显示文本也可显示图片通过setBackgroundResource方法设置背景图片而ImageButton只能显示图片不能显示文本。ImageButton上的图像可按比例缩放而Button通过背景设置的图像会拉伸变形因为背景图采取fitXY方式无法按比例缩放。Button只能靠背景显示一张图片而ImageButton可分别在前景和背景显示图片从而实现两张图片叠加的效果。 使用ImageButton得注意图像按钮默认的缩放类型为center保持原始尺寸不缩放图片而非图像视图默认的fitCenter倘若图片尺寸较大那么图像按钮将无法显示整个图片。为避免显示不完整的情况XML文件中的ImageButton标签必须指定fitCenter的缩放类型
ImageButtonandroid:layout_widthmatch_parentandroid:layout_height80dpandroid:srcdrawable/sqrtandroid:scaleTypefitCenter/6.3 同时展示文本与图像
现实项目中的需求往往捉摸不定例如客户要求在按钮文字的左边加一个图标这样按钮内部既有文字又有图片乍看之下Button和ImageButton都没法直接使用。若用LinearLayout对ImageView和TextView组合布局虽然可行XML文件却变得冗长许多。Button提供了几个与图标有关的属性通过这些属性即可指定文字旁边的图标以下是有关的图标属性说明。 drawableTop指定文字上方的图片。drawableBottom指定文字下方的图片。drawableLeft指定文字左边的图片。drawableRight指定文字右边的图片。drawablePadding指定图片与文字的间距。