学习目标:
掌握 Android开发的前后端应用
学习内容:
要学的内容
1、 Android项目中添加RadioButton单选按钮
2、 Android项目中添加CheckBox复选框
3、 Android项目中添加DatePicker
4、 Android项目中添加TimePicker
5、 Android项目中添加Chronometer
6、 Android项目中添加ProgressBar
7、 Android项目中添加SeekBar
8、 Android项目中添加RatingBar
学习时间:
1、 周一至周天早上9:00-上午 11:30学习产出:
学习计划的总量
1、 网络视频20个
2、 CSDN 技术博客 1 篇
==================================
- 添加RadioButton单选按钮
链接:blibliAndroid开发从入门到精通(项目案例版)42
实现勾选单选题,并且提交
效果如图:
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity"
android:orientation="vertical">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="20dp"
android:paddingLeft="20dp"
android:paddingRight="20dp"
android:paddingBottom="20dp"
android:textSize="18sp"
android:text="This is a question, please pick an answer from the below four choices and hit submit after you pick."
/>
<RadioGroup
android:id="@+id/rg1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingLeft="20dp"
>
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="A.11111"
android:textColor="#000000"/>
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="B.22222"
android:textColor="#000000"/>
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="C.33333"
android:textColor="#000000"/>
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="D.44444"
android:textColor="#000000"/>
</RadioGroup>
<Button
android:id="@+id/btn1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:layout_marginLeft="20dp"
android:background="@color/colorPrimary"
android:textColor="#ffffff"
android:text="submit"
/>
</LinearLayout>
MainActivity.java
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final RadioGroup rg=(RadioGroup)findViewById(R.id.rg1);
rg.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup rg, int i) {
RadioButton rb=(RadioButton)findViewById(i);
//rb.getText();
Toast.makeText(MainActivity.this,"You have chose:"+ rb.getText(),Toast.LENGTH_LONG).show();
}
});
Button button=(Button)findViewById(R.id.btn1);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
for (int i = 0; i < rg.getChildCount(); i++) {
RadioButton rb=(RadioButton)rg.getChildAt(i);
if(rb.isChecked()){
Toast.makeText(MainActivity.this,"submit"+rb.getText(),Toast.LENGTH_SHORT).show();
break;
}
}
}
});
}
}
2.添加CheckBox复选框
链接:blibliAndroid开发从入门到精通(项目案例版)44
<CheckBox
android:id="@+id/like1"
android:layout_marginLeft="20dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="PE"
android:checked="true"
/>
<CheckBox
android:id="@+id/like2"
android:layout_marginLeft="20dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Music"
/>
<CheckBox
android:id="@+id/like3"
android:layout_marginLeft="20dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Art"
/>
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final CheckBox like1;
like1=(CheckBox) findViewById(R.id.like1);
like1.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
if(like1.isChecked()){
Toast.makeText(MainActivity.this,like1.getText(),Toast.LENGTH_LONG).show();
}
}
});
}
}
- 添加DatePicker
链接:blibliAndroid开发从入门到精通(项目案例版)46
activity_main.xml
<DatePicker
android:id="@+id/datepicker"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginLeft="20sp"
android:layout_marginTop="20sp"
/>`
MainActivity.java
public class MainActivity extends AppCompatActivity {
int year,month,day;
DatePicker datePicker;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
datePicker=findViewById(R.id.datepicker);
Calendar calender= Calendar.getInstance();
year=calender.get(Calendar.YEAR);//instance.get(util.year)
month=calender.get(Calendar.MONTH);
day=calender.get(Calendar.DAY_OF_MONTH);
datePicker.init(year, month, day, new DatePicker.OnDateChangedListener() {
@Override
public void onDateChanged(DatePicker datePicker, int year, int monthOfYear, int dayOfMonth) {
MainActivity.this.year=year;//change lv in mainactivity
MainActivity.this.month=monthOfYear;
MainActivity.this.day=dayOfMonth;
show(year,monthOfYear,dayOfMonth);
}
});
private void show(int year,int month,int day){
String str=(month+1)+"/"+day+"/"+year;
Toast.makeText(MainActivity.this,str,Toast.LENGTH_SHORT).show();
}
}
- 添加TimePicker
链接:blibliAndroid开发从入门到精通(项目案例版)47
activity_main.xml
<TimePicker
android:id="@+id/timepicker"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
MainActivity.java
public class MainActivity extends AppCompatActivity {
TimePicker timePicker;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
timePicker=findViewById(R.id.timepicker);
timePicker.setIs24HourView(true);
timePicker.setOnTimeChangedListener(new TimePicker.OnTimeChangedListener() {
@Override
public void onTimeChanged(TimePicker timePicker, int i, int i1) {
String str=i+":"+i1;
Toast.makeText(MainActivity.this,str,Toast.LENGTH_LONG).show();
}
});
}
}
- 添加Chronometer
链接:blibliAndroid开发从入门到精通(项目案例版)48
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<Chronometer
android:id="@+id/chrono"
android:textSize="30sp"
android:textColor="@color/colorPrimary"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:format="Time used: %s"
/>
</RelativeLayout>
MainActivity.java
public class MainActivity extends AppCompatActivity {
Chronometer chronometer;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); //display in full screen
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
chronometer=findViewById(R.id.chrono);
chronometer.setBase(SystemClock.elapsedRealtime());
chronometer.setFormat("%s");
chronometer.start();
chronometer.setOnChronometerTickListener(new Chronometer.OnChronometerTickListener() {
@Override
public void onChronometerTick(Chronometer chronometer) {
if(SystemClock.elapsedRealtime()-chronometer.getBase()>=60000){
chronometer.stop();
}
}
});
}
}
- 添加ProgressBar进度条
链接:blibliAndroid开发从入门到精通(项目案例版)51
activity_main.xml
<ProgressBar
android:id="@+id/pb2"
android:layout_alignParentBottom="true"
android:layout_marginBottom="20dp"
style="@android:style/Widget.ProgressBar.Horizontal"
android:layout_width="match_parent"
android:layout_height="50dp"
android:max="100"
/>
MainActivity.java
public class MainActivity extends AppCompatActivity {
ProgressBar progressBar;
private int mProgress=0;
private static Handler mhandler;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
progressBar=findViewById(R.id.pb2);
//不支持在主线程中更新ui组件
// 不支持在当前activity中更新当前activity页面的组件,所以需要一个 消息handler
//发送消息,更新ui组件
mhandler=new Handler(){
@Override
public void handleMessage(@NonNull Message msg) {
if(msg.what==0x111){
progressBar.setProgress(mProgress);
}else{
Toast.makeText(MainActivity.this,"The progress has done",Toast.LENGTH_SHORT).show();
progressBar.setVisibility(View.GONE); //finish the progress,then bar gone
}
}
};
new Thread(new Runnable() {
@Override
public void run() {
while(true){//耗时操作
mProgress=dowork();
Message msg=new Message();
if(mProgress<100){
msg.what=0x111;
mhandler.sendMessage(msg);
}else{ //mprogress=100
msg.what=0x110;
mhandler.sendMessage(msg);
break;
}
}
}
private int dowork() {
mProgress+=Math.random()*10;
try {
Thread.sleep(200);
} catch (InterruptedException e) {
e.printStackTrace();
}
return mProgress;
}
}).start();
}
}
7、 添加SeekBar拖动条
链接:blibliAndroid开发从入门到精通(项目案例版)53
通过拉动拖动条实现对图片对比度的调整:
效果如图:
activity_main.xml
<ImageView
android:id="@+id/image1"
android:src="@drawable/goldengate"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
<SeekBar
android:id="@+id/seekbar"
android:layout_alignParentBottom="true"
android:layout_marginBottom="100dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:max="255"
android:progress="255"
/>
MainActivity.java
public class MainActivity extends AppCompatActivity {
SeekBar seekBar;
ImageView imageView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); //display in full screen
//getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
imageView=findViewById(R.id.image1);
seekBar=findViewById(R.id.seekbar);
seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean b) {
//根据progress改变图像透明度
imageView.setImageAlpha(progress);
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
}
});
}
}
8、 添加RatingBar星级评分条
链接:blibliAndroid开发从入门到精通(项目案例版)55
读取用户打分,提交后显示在屏幕上
效果如图:
activity_main.xml
<RatingBar
android:id="@+id/ratingbar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:layout_marginBottom="80dp"
android:numStars="5"
android:rating="2"
android:stepSize="1"
/>
<Button
android:id="@+id/btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="20dp"
android:layout_marginBottom="45dp"
android:layout_gravity="bottom"
android:text="submit"
/>
<!-- android:stepSize="0.5"-->
<!-- android:isIndicator="true" cannot be changed-->
MainActivity.java
package com.raspberry.myratingbar;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.RatingBar;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
RatingBar ratingbar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ratingbar=(RatingBar)findViewById(R.id.ratingbar);
Button button=findViewById(R.id.btn);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
float rating=ratingbar.getRating();
Toast.makeText(MainActivity.this,"You got ratings: "+rating,Toast.LENGTH_SHORT).show();
}
});
// String stepsize=String.valueOf(ratingbar.getStepSize());
// Toast.makeText(MainActivity.this,"The Stepsize is: "+stepsize,Toast.LENGTH_SHORT).show();
// String progress=String.valueOf(ratingbar.getProgress());
// Toast.makeText(MainActivity.this,"The Progress is: "+progress,Toast.LENGTH_SHORT).show();
}
}
Thank you for reading !