一:view
Android中每个控件父类都是一个view,view代表屏幕上的一块空白区域,具体显示什么内容交个具体的控件显示,
比如这块区域处理文本内容的view就用控件TextView
二:控件通用属性
三:基础控件
处理文本的view——TextView
相当java中Swing包中的JLabel,但是功能更加强大,支持文本处理、支持html代码、文本样式处理、链接效果等,除了上面的通用的属性外,还有以下属性
android:text="@string/app_name"//内容
android:textColor="#fff"//文本颜色
android:textSize="30sp"//文本大小
android:lineSpacingMultiplier="2"//行倍距
android:lineSpacingExtra="20sp"//行距
android:singleLine="true"//单行显示
android:ellipsize="end"//三点省略位置
android:focusable="true"//设置焦点
android:focusableInTouchMode="true"//设置触摸时可获取焦点
android:marqueeRepeatLimit="marquee_forever"//设置跑马灯
被点击的view——Button
对于按钮主要是如何注册点击事件,方法有以下四种
-
自定义内部类
<Button android:id="@+id/login_btn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="登录"/>
public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_login); //获取按钮 Button login_btn =findViewById(R.id.login_btn); //按钮login_btn被点击时候的事件,使用自定义内部类实现 login_btnListener login_btnListener = new login_btnListener(); login_btn.setOnClickListener(login_btnListener) ;//注册事件监听器 } //自定义一个内部类实现点击事件接口 class login_btnListener implements View.OnClickListener{ @Override public void onClick(View v) { Log.e("tag","点击了login_btn按钮戳发了自定义事件"); } } }
-
匿名内部类
public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_login); Button login_btn =findViewById(R.id.login_btn); login_btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Log.e("tag","点击了login_btn按钮戳发了自定义事件"); } }); } }
-
当前Activity去实现事件接口
public class MainActivity extends AppCompatActivity implements View.OnClickListener{//实现了点击事件接口 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_login); Button login_btn =findViewById(R.id.login_btn); login_btn.setOnClickListener(this); } @Override public void onClick(View v) { Log.e("tag","点击了login_btn按钮戳发了自定义事件"); } }
-
在布局文件中添加点击事件属性
<Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="loginClik" android:text="登录"/>
public class MainActivity extends AppCompatActivity{ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_login); } public void loginClik(View v) {//定义xml中绑定的方法 Log.e("tag","点击了login_btn按钮戳发了自定义事件"); } }
处理图片的view——ImageView
用来现实和控制图像的控件,可以对他进行放大缩小旋转等,常见属性:
android:src="@mipmap/login"//指定前景资源名称
接收用户信息输入的View——EditText
用于输入文本内容的输入框,常用属性
android:inputType="textPassword"//文本框类型如number、text...
android:hint="请输入密码"//文本框默认内容
android:maxLength="12"//设置文本长度
进度条类的view——ProgressBar
默认的进度条是一个没有刻度、圆形、只是一个不断旋转的动画效果,通过设置style可以显示水平带有刻度的进度条
style="?android:attr/progressBarStyleHorizontal"//设置滚动条样式,这里progressBarStyleHorizontal是水平
android:progress="30"//设置进度值
android:max="200"//设置进度条最大值 默认100
android:indeterminate="true"//设置一直滚动
如何实现滚动条加载,这个相对于xml而言,在java代码中实现比较容易
我们定义带有id的一个滚动条
<ProgressBar
android:id="@+id/myProgress"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="?android:attr/progressBarStyleHorizontal"
/>
public class MainActivity extends AppCompatActivity{//实现了点击事件接口
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
final ProgressBar progressBar = findViewById(R.id.myProgress);
//Android4.o之后不能在线程中直接操作控件 但是进度条是个特列
new Thread(){
@Override
public void run(){
for (int i = 0; i < 100; i++) {
progressBar.setProgress(i);
try {
Thread.sleep(30);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}.start();
}
}