Android_2021年10月8日
2021年10月8日记录
安卓文件夹的含义:
- layout:放你的布局文件
- drawable:可以放置文件
- mipmap:可以放置文件,但是这个效果会更好
一、TextView
可以完成的效果:
- 对长文本进行显示处理
- 支持Html代码
- 内容有样式、链接效果
在XML文件中,如果内容比较长,可以在res下面的values文件夹下面的strings.xml文件里面来定义文字name:
比如:
<resources>
<string name="haha">123</string>
</resources>
这个haha就是自己定义的name,然后在activity_main.xml文件里面:
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/haha"
/>
这样就可以使用自己定义的文字了
如果文字太多,一页放不完,可以在activity_main中使用ScrollView,这样就可以实现滚动条的,来上面翻阅文字。但是需要注意的是,使用了ScrollView,在xml文件里面只能出现一个TextView空间,如果想使用两个TextView,就需要把TextView这个包起来来实现布局。
如果只想显示一行,就比如QQ签名只显示一行,可以使用android:singleLine="true"来实现。这个android:singleLine="true"已经过时了,但是还可以使用,替代方法是android:lines="1"。
实现文字跑马灯效果
android:singleLine="true"
android:ellipsize="marquee"
android:focusable="true"
android:focusableInTouchMode="true"
android:marqueeRepeatLimit="marquee_forever"
其中:
android:singleLine="true":设置单行
android:ellipsize="marquee"
android:focusable="true":设置可以获取焦点
android:focusableInTouchMode="true":设置触摸时可以获取焦点
android:marqueeRepeatLimit="marquee_forever":设置跑马灯的重复
通用属性(一):
- android:orientation="vertical":整体布局是垂直的
- android:layout_width
- android:layout_height
- match_parent:填充整个父容器
- wrap_content:根据所含内容确定
- 正整数单位dp:精确大小
- android:id
- @id/valName:使用已经存在的id
- +id/valName:添加新的id
- android:layout_margin:正整数单位dp:和相邻空间或边缘的距离
- android:padding:正整数dp:空间内容距离空间边缘的距离
- android:background:十六进制的颜色值:颜色作为北京
- mipmap/resourceId:图片作为背景
- android:textSize:调节字的大小
- 22sp 注意是以sp结尾的
- android:textColor:调节字的颜色
- “#00fff”:字体的颜色,十六进制的
- android:lineSpacingMultiplier="2" 调节行距的,1没有效果
- android:lineSpacingExtra="15sp" 调节行距的,这个可以根据大小来调节,效果更好
通用属性(二):
- android:layout_gravity:是根据父控件来说的
- android:gravity:是对控件自身内容对自己的限定
- center_horizontal:水平居中
- center_vertical:垂直居中
- center:水平垂直居中
- left:居左
- right:居右
- top:居顶
- bottom:居底
- android:visibility:
- visible:可见状态
- invisible:不可见状态,但是保留控件位置
- gone:不可见状态,也不保留控件位置
注意的东西:
- 如果在使用android:gravity和android:layout_gravity中,还是按照android:gravity的优先级来实现的
二、EditText
-
inputType:输入的类型
- textEmailAddress:邮箱地址
- phone:手机号
- number:只能正整数
- textpassword:可以数字字母以及字符
- numberSigned:整数
- numberDecimal:小数
-
android:maxLength="12" :最大长度
-
hint:提示信息
- android:hint="请输入密码"
- android:textColorHint="#fff000" :提示信息的颜色
三、Button注册点击事件
首先需要在xml文件里面定义按钮的name
<Button
android:id="@+id/butten1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="通过自定义内部类来实现点击事件"
/>
-
自定义内部类
Button butten1 = findViewById(R.id.butten1); MyClickLister mcl = new MyClickLister(); //点击事件:点击的时候触发 butten1.setOnClickListener(mcl); //为按钮注册点击事件监听器 //这个是使用自定义内部类的写法,需要自己定义一个内部类 class MyClickLister implements View.OnClickListener{ @Override public void onClick(View view) { Log.e("TAG","刚刚点击的按钮是注册了内部类监听对象的按钮"); } } -
匿名内部类:适用于有唯一操作的按钮
这个写法要比自定义内部类的写法更简洁,推荐使用
Button butten2 = findViewById(R.id.butten2); butten2.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Log.e("TAG","刚刚点击的按钮是匿名内部类的按钮"); } }); -
当前Activity去实现事件接口
首先需要在类上面更改
public class MainActivity extends AppCompatActivity implements View.OnClickListener { }然后创建类
@Override public void onClick(View view) { Log.e("TAG","用本类实现的"); }然后在类里面实现
Button butten3 = findViewById(R.id.butten3); butten3.setOnClickListener(this); -
在xml文件中添加点击事件属性
<Button android:id="@+id/butten4" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="在xml文件中绑定" android:onClick="myClick"然后
//4.通过xml绑定点击事件 //参数:被点击的控件对象 public void myClick(View view) { Log.e("TAG","通过XML绑定的点击事件"); }
四、ImagView图像控件
用于显示和控制图像的控件,可以对它进行放大做小旋转等操作
图片命名规范:英文字母、数字、下划线
- android:src 指定前景图片资源 ,前景图片是会根据比例变化的
- android:background 设置背景,背景会根据空间进行拉伸的
还有一个
- ImagButten:就是把一张图片当成一个按钮来使用
五、ProgressBar
默认是圆形的,没有刻度,只是一个不断旋转的动画效果,可以设置style,可以显示传统的水平带刻度进度条
常用属性:
- style="?android:attr/progressBarStyleHorizontal" 设置为水平的进度条
- android:progress="30" 设置刻度为30
- android:max="200" 设置最大刻度为200
- android:indeterminate="true" 设置水平滚动的进度条
默认圆形的进度条:
<ProgressBar
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
改为水平的带有刻度的进度条,刻度为30,默认进度为100(刻度和最大值都是可以设置的)
<ProgressBar
android:layout_width="match_parent"
android:layout_height="wrap_content"
style="?android:attr/progressBarStyleHorizontal"
android:progress="30"
android:max="200"
/>
水平滚动的进度条:
<ProgressBar
android:layout_width="match_parent"
android:layout_height="wrap_content"
style="?android:attr/progressBarStyleHorizontal"
android:indeterminate="true"
/>
实现缓慢加载进度条的样式
//创建滚动条
ProgressBar progressBar = findViewById(R.id.pro1);
progressBar.setProgress(80);
//实现加载的过程,通过线程来实现
//创建线程
new Thread() {
@Override
public void run() {
for (int i = 1; i <= 100; i++) {
progressBar.setProgress(i);
try {
//每完成一个进度就稍微等一下
Thread.sleep(30);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}.start();
需要注意的是,在android 4.0之后是不能直接在线程中操作控件的,但是进度条是个特例
浙公网安备 33010602011771号