Android04之CheckBox和ImageView
上次我们介绍了两种常用的UI控件,分别是EditText和RadioButton,不清楚用法的可以查看我的上一次博客,链接为https://blog.csdn.net/chenpeixing361/article/details/89054256。这一次我们我们继续介绍两种常用的控件,分别是CheckBox和ImageView。
CheckBox
checkbox也就是复选框的意思,我们选择一项或者多项标签。这里我们主要讲解以下内容:①常用属性;②自定义样式;③监听事件。我们紧接着之前的博客内容进行拓展,在activity_main.xml中添加两个按钮,代码如下:
我们这里把介绍ImageView的按钮也顺便添加进去,然后我们新建两个Activity类,类名分别是CheckBoxActivity和ImageViewActivity。我们在MainActivity中,设置两个界面跳转事件,代码如下:
Button btnCheckBox = findViewById(R.id.btn_checkbox); btnCheckBox.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //跳转到CheckBox界面 Intent intent = new Intent(MainActivity.this,CheckBoxActivity.class); startActivity(intent); } }); Button btnImageView = findViewById(R.id.btn_image_view); btnImageView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //跳转到ImageView界面 Intent intent = new Intent(MainActivity.this,ImageViewActivity.class); startActivity(intent); } });
我们在创建CheckBoxActivity类时,会附带创建一个activity_check_box.xml文件,该文件即代表该界面的布局,代码如下:
<?xml version="1.0" encoding="utf-8"?>
CheckBoxActivity代码主要添加了监听事件,代码如下:
package com.autumn;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.widget.CheckBox;import android.widget.CompoundButton;import android.widget.Toast;public class CheckBoxActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_check_box); //给checkbox设置点击事件 CheckBox checkBox = findViewById(R.id.cb_5); checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { Toast.makeText(CheckBoxActivity.this,isChecked?"cb5被选中":"cb5未被选中",Toast.LENGTH_SHORT).show(); } }); CheckBox checkBox1 = findViewById(R.id.cb_6); checkBox1.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { Toast.makeText(CheckBoxActivity.this,isChecked?"cb6被选中":"cb6未被选中",Toast.LENGTH_SHORT).show(); } }); CheckBox checkBox2 = findViewById(R.id.cb_7); checkBox2.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { Toast.makeText(CheckBoxActivity.this,isChecked?"cb7被选中":"cb7未被选中",Toast.LENGTH_SHORT).show(); } }); }}
界面运行效果如下图所示:
我们设置了两组checkbox,其中第一组采用默认的样式,第二组采用自定义的样式,并且还添加了监听事件,通过Toast可以弹出相应的文字内容。
自定义的bg_checkbox.xml文件,在res/drawable目录下,代码如下:
<?xml version="1.0" encoding="utf-8"?>
我们用了两张小的图标,来表示选中和未选中复选框的状态变化。
ImageView
ImageView从字面义理解为图像视图,这里我们讲解以下内容:①常用属性;②加载网络图片。
我们创建的ImageViewActivity活动类中会附带一个activity_image_view.xml文件,该文件代码如下:
<?xml version="1.0" encoding="utf-8"?>
ImageViewActivity代码主要用来加载第三方的网络图片,这里我们选择了一张王者农药里的大小姐图片,代码如下:
package com.autumn;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.widget.ImageView;import com.bumptech.glide.Glide;public class ImageViewActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_image_view); ImageView imageView = findViewById(R.id.iv_4); //加载孙尚香大小姐的网络图片 Glide.with(this).load("https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1554742176602&di=46cebc51f7c64b446c38793329e9b8d2&imgtype=0&src=http%3A%2F%2Fwww.ooqiu.com%2Fuploads%2Fallimg%2F170726%2F262-1FH6142G20-L.jpg").into(imageView); }}
我们先展示一下运行截图吧,相信大家都等不及了,如下:
哈哈哈,最后一张图片贼帅气吧(偷笑)!
好了,我们进行讲解,前面三张图都用了ImageView控件,src表示图片地址,我们把图片统一放到res/drawable目录下,scaleType中这里我们用了常见的三种属性值,其中fixXY属性会撑满控件,图片的宽高比会发生变化;fitCenter属性会保持宽高比缩放,直至图片可以完全显示,一般这样布局上下或者左右边缘会多出一点;centerCrop属性会保持宽高比缩放,直至完全覆盖控件,裁剪显示。
最后一张图片是通过网络加载得到,这里我们用到了Glide,一个第三方的库,github上链接为https://github.com/bumptech/glide,文档里面还介绍了glide的用法,部分截图如下:
我们找到app模块下的build.gradle文件,根据文档说明添加相应的依赖,完整代码如下:
apply plugin: 'com.android.application'android { compileSdkVersion 28 defaultConfig { applicationId "com.autumn" minSdkVersion 21 targetSdkVersion 28 versionCode 1 versionName "1.0" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } }}repositories { mavenCentral() google()}dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) implementation 'com.android.support:appcompat-v7:28.0.0' implementation 'com.android.support.constraint:constraint-layout:1.1.3' testImplementation 'junit:junit:4.12' androidTestImplementation 'com.android.support.test:runner:1.0.2' androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2' implementation 'com.github.bumptech.glide:glide:4.9.0' annotationProcessor 'com.github.bumptech.glide:compiler:4.9.0'}
加载第三方库好了,还有一步就是运行网络的访问了,我们在manifests/AndroidManifest.xml文件添加一行代码,如下:
好了,加上这行代码就能就可以访问网络图片了。
这次的分享到这里就结束了,有疑惑的可以在下方评论区留言!
更多相关文章
- productFlavors 用法
- Android(安卓)开发第七弹:简易时钟(秒表)
- android initlogo.rle 在32位LCD上显示
- Android(安卓)底部支付弹窗
- Android开发之数据存储全方案
- android 手势识别代码
- android显示段落文本及多行文本显示处理
- android下拉刷新+左滑删除的实现(第一种方式)
- Gallery和GridView浅析