:常用组件
Posted 亿钱君
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了:常用组件相关的知识,希望对你有一定的参考价值。
常用组件
- 1. 按钮与事件响应
- 2. 文本组件
- 3. 消息与对话框
- 4. 菜单
- 5. 单选按钮:RadioButton
- 6. 复选框:CheckBox
- 7. 下拉列表:Spinner
- 8. 图像组件:ImageView
- 9. 列表:ListView
- 10. 进度条: ProgressBar
- 11. 滑块:SeekBar
- 12. 选择日期和时间对话框
- 13. 更多组件
- 14. 图像处理
1. 按钮与事件响应
- match_partent:表示组件的宽度与其父容器一样宽
- wrap_content:表示根据内容指定组件的高度
- android:textAllCaps,设置按钮文本是否所有字母都大写,默认是true,即按钮的文本内容全部大写
1.1 响应单击操作
package com.syl.buttondemo;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextClock;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity implements View.OnClickListener
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
((Button)findViewById(R.id.btn1)).setOnClickListener(this);
((Button)findViewById(R.id.btn2)).setOnClickListener(this);
((Button)findViewById(R.id.btn3)).setOnClickListener(this);
@Override
public void onClick(View v)
TextView txt1 = (TextView)findViewById(R.id.txt1);
switch (v.getId())
case R.id.btn1:
txt1.setText("单击Button1");
break;
case R.id.btn2:
txt1.setText("单击Button2");
break;
case R.id.btn3:
txt1.setText("单击Button3");
break;
注意:此处实现多个按钮响应的区别
1.2 响应长按操作并震动
- 实现View.OnLongClickListener接口,并实现其中的onLongClickI()方法
- onTouch()方法中返回一个boolean类型的值,返回true值时,不再响应其他组件操作
package com.syl.buttondemo;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Context;
import android.os.Bundle;
import android.os.Vibrator;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity implements View.OnLongClickListener
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button btn1 = (Button)findViewById(R.id.btn1);
btn1.setOnLongClickListener(this);
//长按
@Override
public boolean onLongClick(View v)
if(v.getId() == R.id.btn1)
Toast.makeText(MainActivity.this,"长按事件",Toast.LENGTH_SHORT).show();
//震动提示
Vibrator vib = (Vibrator)getSystemService(Context.VIBRATOR_SERVICE);
vib.vibrate(500);//震动半秒
return true;
- 响应长按操作也需注册,(例如在onCreate()方法中,让btn按钮响应长按操作)
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button btn1 = (Button)findViewById(R.id.btn1);
btn1.setOnLongClickListener(this);
- 需要在AndroidManifest.xml中声明需要使用的震动权限
1.2 响应触摸事件
- 处理手指按下、移动、离开的操作
- 实现View.OnTouchListener()方法,并重写其中的onTouch()方法
- onTouch()方法中返回一个boolean类型的值,返回true值时,不再响应其他组件操作
- 组件需在onCreate()方法中注册响应事件
- 代码
package com.syl.buttondemo;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity implements View.OnTouchListener
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button btn2 = (Button)findViewById(R.id.btn2);
btn2.setOnTouchListener(this);
@Override
public boolean onTouch(View v, MotionEvent event)
if(v.getId() == R.id.btn2)
TextView txt = (TextView) findViewById(R.id.txt1);
if(event.getAction()==MotionEvent.ACTION_DOWN)
txt.setText("手指按下");
else if(event.getAction()==MotionEvent.ACTION_UP)
txt.setText("手指离开");
else if(event.getAction()==MotionEvent.ACTION_MOVE)
txt.setText("手指滑动");
return true;
2. 文本组件
2.1 TextView
- android:textSize,设置文本尺寸,单位是sp
- android: Color,设置字体颜色
- android: gravity,设置文字对齐方式
2.2 EditText:输入、显示文本内容
package com.syl.edittextdemo;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
public class MainActivity extends AppCompatActivity
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button btn1 = (Button)findViewById(R.id.btn1);
btn1.setOnClickListener(new View.OnClickListener()
@Override
public void onClick(View v)
EditText edit1 = (EditText)findViewById(R.id.edit1);
Button btn = (Button)findViewById(R.id.btn1);
btn.setText(edit1.getText());
);
3. 消息与对话框
3.1 Toast:显示提示信息
- 参数1:指定一个Content对象
- 参数2:指定需要显示的文本
- 参数3:指定信息显示的时间长短(Toast.LENGTH_LONG / Toast.LENGTH_SHORT)
- 创建对象后,调用它的show()方法即可显示信息
3.2 AlertDialog:用于显示包含选择按钮的对话框
- 使用AlertDialog.Builder对象
- setTitle() :指定对话框的标题信息
- setMessage():指定对话框提示消息
- setCancelable():指定对话框是否可以通过其他方式取消
- setPositiveButton():指定肯定操作
- setNegativeButton():指定否定操作
- setNeutralButton():可定义第三个按钮,类似再看看的意思
package com.syl.alertdialogdemo;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity implements View.OnClickListener
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button btn1 = (Button)findViewById(R.id.btn1);
btn1.setOnClickListener(this);
@Override
public void onClick(View v)
if(v.getId()==R.id.btn1)
AlertDialog.Builder dlg = new AlertDialog.Builder(MainActivity.this);
dlg.setTitle("请确认您的操作");
dlg.setMessage("真得要这么做吗");
dlg.setCancelable(false);
//肯定操作按钮
dlg.setPositiveButton("确认", new DialogInterface.OnClickListener()
@Override
public void onClick(DialogInterface dialog, int which)
Toast.makeText(MainActivity.this,"确认操作",Toast.LENGTH_LONG).show();
);
//取消操作
dlg.setNegativeButton("取消", new DialogInterface.OnClickListener()
@Override
public void onClick(DialogInterface dialog, int which)
Toast.makeText(MainActivity.this,"取消操作",Toast.LENGTH_SHORT).show();
);
dlg.show();
3.3 Progress:用于显示一些信息和一个正在忙的图标,用于指示程序正在执行
4. 菜单
在Activity中使用菜单,需要做以下几个步骤
- 第一步:使用XML文件定义菜单
- 第二步:在Activity中关联菜单
- 第三步:定义各个菜单项的响应代码
package com.syl.menudemo;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//关联菜单
public boolean onCreateOptionsMenu(Menu menu)
MenuInflater mi = getMenuInflater();
mi.inflate(R.menu.mainmenu,menu);
return true;
//响应菜单项
public boolean onOptionsItemSelected(MenuItem item)
switch (item.getItemId())
case R.id.menuitem1:
Toast.makeText(this,"菜单项1",Toast.LENGTH_SHORT).show();
break;
case R.id.menuitem2:
Toast.makeText(this,"菜单项2",Toast.LENGTH_SHORT).show();
break;
case R.id.menuitem3:
Toast.makeText(this,"菜单项3",Toast.LENGTH_SHORT).show();
break;
return true;
例二:嵌套菜单
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-zuto">
<item
android:id="@+id/menu_settings"
android:title="设置"
android:icon="@mipmap/ic_launcher"
app:showAsAction="always"/>
<item
android:id="@+id/menu_check"
android:title="自动保存"
android:checkable="true"
android:checked="true"/>
<item
android:id="@+id/menu_help"
android:title="学号姓名">
<menu>
<item
android:id="@+id/xuehao"
android:title="学号"/>
<item
android:id="@+id/xingming"
android:title="姓名"/>
</menu>
</item>
<item
android:id="@+id/menu_exit"
android:title="退出"
app:showAsAction="never"
android:orderInCategory="100"/>
</menu>
小功能⭐️Unity调用Android常用事件