Andriod Studio(三):控件
可以在这三个文件里预定义好要用的样式、字符串、颜色。在其他地方引用时,代码中用 R. 获得,XML中用 @ 获取。
1. styles.xml
这里定义了基本的样式:
2. colors.xml
可以在网上搜集一些颜色加进去
3. strings.xml
定义一些字符串,比如APP名字,要换名字直接在这里更改就行了。
<string name="app_name">淘你喜欢</string>
4. 修改应用的图标和名称
AndroidMainfest.xml文件中,找到对应的文件,在被引用的文件里修改。
android:icon="@mipmap/ic_launcher" 指定应用图标
android:label="@string/app_name" 指定应用名称
------------------------------------控------------------件-----------------------------------
基础:
andriod:id="@+id" 在XML中引用一个id用 @id/id_name;定义一个id用 @+id/id_name。
定义当前元素的长宽:
match_parent:和父元素一样
wrap_content:自适应,刚好包住内容
android:layout_width="200dp"
android:layout_height="100dp"
所有活动都要在AndroidManifest.xml中注册才能生效,Android Studio会自动帮我们注册。
还需要为程序配置主活动,让程序知道先启动谁。配置方法如下图:
添加了新的活动之后,怎么启动?
修改主活动的类(MainActivity.java)中按钮事件:
public void onClick(View v){ Intent intent = new Intent(MainActivity.this,SecondActivity.class); startActivity(intent); }
Intent是一个意图,第一个参数是上下文,第二个参数是目标活动。
Intent是Android程序中各组件之间进行交互的一种重要方式,它不仅可以指明当前组件想要执行的动作,还可以在不同组件之间传递数据。 显式Intent可以用于明确指定启动某个Activity。
即在MainActivity活动基础上打开SecondActivity活动。
intent还可以启动其他程序的活动,比如打开一个网页:
1 @Override 2 public void onClick(View v){ 3 Intent intent = new Intent(Intent.ACTION_VIEW); 4 intent.setData(Uri.parse("http://www.baidu.com")); 5 startActivity(intent); 6 }
一、TextView
用途:显示文本信息
效果图:
添加阴影效果:
1 android:shadowColor="@color/red" 阴影颜色 2 android:shadowRadius="5.0" 阴影半径 3 android:shadowDx="10.0" x轴偏移量 4 android:shadowDy="10.0" y轴偏移量
跑马灯效果:
1 android:singleLine="true" 是否单行显示 2 android:ellipsize="marquee" 在哪里省略文本,marquee是可移动的 3 android:focusable="true" 是否可以获取焦点 4 android:focusableInTouchMode="true" 在触摸模式下是否可以聚焦 5 android:marqueeRepeatLimit="marquee_forever" 字幕动画重复次数
二、Button
1. 在xml里添加Button控件:
效果如图:
textAllCaps="false" 这一行是因为,默认是true,会自动把text内容转换成大写。
2. 在Activity中给按钮添加监听
方法一:
方法二:接口
三、EditText
用途:允许用户输入和编辑内容,如发短信,发微博
1. 提示信息,用户输入时消失 用 android:hint
android:hint="请输入用户名"
2. 控制输入栏的行数
android:maxLines="1"
3. 获取EditText的输入内容
想要在哪个活动里获取就在哪个活动类里写。
添加 private EditText editText;
在onCreate里根据Id找到这个 editText=(EditText)findViewById(R.id.edit_text);
例如我们想按下按钮就显示输入的信息:
在onClick里添加:
String inputText = editText.getText().toString();
Toast.makeText(this,inputText, Toast.LENGTH_SHORT).show();
四、ImageView
用途:展示图片
<ImageView android:id="@+id/image_view" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/ic_launcher_foreground"/>
效果图:
点击按钮切换图片:调用setImageResource()方法
Activity里声明图片 private ImageView imageView;
onCreate里获取图片 imageView=(ImageView) findViewById(R.id.image_view);
onClick里调用方法更换图片:imageView.setImageResource(R.drawable.ic_launcher_background);
五、ProgressBar
用途:显示进度条
默认显示的是一个圆圈,也可以更改成进度条样式,max设置进度条最大值。
设置进度条进度
六、AlertDialog
用途:弹出对话框,但会屏蔽其他控件交互,因此用于非常重要的警告信息。
七、Toast
用途:提示消息,一段时间后自动消失。
Toast是Android系统提供的一种非常好的提醒方式。 在程序中可以使用它将一些短小的信息通知给用户,这些信息会在一段时间后自动消失,并且不会占用任何屏幕空间。
1)定义一个弹出Toast的触发点
findViewById():返回一个View对象,强制转换成Button对象。
2)注册一个监听器
3)makeText() 创建一个Toast对象
第一个参数 context:上下文,可以传入活动本身;
第二个参数 text:显示的文本内容;
第三个参数 Toast 显示的时长,两个内置常量:Toast.LENGTH_SHORT、Toast.LENGTH_LONG。
效果图:
八、Menu
用途:右上角菜单项
Menu提供了一种机制,可以让界面中的菜单项在默认情况下不显示。 只有当用户主动点击了菜单按钮时,才会弹出里面具体的内容,因此它不会占用任何Activity的空间。
在activity_main.xml中添加了一个按钮。
<Button android:id="@+id/button_1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Button1"/>
在res文件夹下创建了menu文件夹和main.xml文件
main.xml中添加如下代码:
1 <?xml version="1.0" encoding="utf-8"?> 2 <menu xmlns:android="http://schemas.android.com/apk/res/android"> 3 <item 4 android:id="@+id/add_item" 5 android:title="Add"/> 6 <item 7 android:id="@+id/remove_item" 8 android:title="Remove"/> 9 </menu>
在MainActivity.java中重写onCreate并添加按钮监听
1 @Override 2 protected void onCreate(Bundle savedInstanceState) { 3 super.onCreate(savedInstanceState); 4 setContentView(R.layout.activity_main); 5 Button button1 = (Button) findViewById(R.id.button_1); 6 button1.setOnClickListener(new View.OnClickListener(){ 7 @Override 8 public void onClick(View v){ 9 Toast.makeText(MainActivity.this, "You Click Button 1", Toast.LENGTH_SHORT).show(); 10 } 11 }); 12 }
重写创建选项菜单函数和选项被选择函数
1 @Override 2 public boolean onCreateOptionsMenu(Menu menu) { 3 //得到menuInflater对象,inflate方法创建菜单,参数1 指定要创建菜单的资源文件,参数2 指定添加对象 4 getMenuInflater().inflate(R.menu.main,menu); 5 return true; 6 } 7 8 @Override 9 public boolean onOptionsItemSelected(@NonNull MenuItem item) { 10 switch(item.getItemId()){ //判断点击的哪一个菜单项 11 case R.id.add_item: 12 Toast.makeText(this, "You Click Add", Toast.LENGTH_SHORT).show(); 13 break; 14 case R.id.remove_item: 15 Toast.makeText(this,"You Click Remove",Toast.LENGTH_SHORT).show(); 16 break; 17 default: 18 } 19 return true; 20 }
Tips: 按下Ctrl+o 可以快速选择重写对象
效果图:
创建一个Return按钮,返回上一层:
修改onClick()里的逻辑就行了,调用finish()。
九、RecyclerView 滚动控件
在app下的build.gradle文件里添加依赖:
implementation 'androidx.recyclerview:recyclerview:1.2.1'
3中的代码再添加一段:
效果图: