Android Studio 之 在活动中使用 Toast
•简介
Toast 是 Android 系统提供的一种非常好的提醒方式;
在程序中可以使用它将一些短小的信息通知给用户;
这些信息会在一段时间内自动消失,并且不会占用任何屏幕空间
•Toast.makeText()函数原型
Toast.makeText(参数1,参数2,参数3);
参数1是 Context,是 Toast 要求的上下文
- 由于活动本身就是一个Context对象,因此直接传入 XXXActivity.this 即可,或者填入 getApplicationContext()
参数2是 Toast 显示的文本内容
参数3是 Toast 显示的时长,有两个内置常量可以选择 Toast.LENGTH_SHORT 和 Toast.LENGTH_LONG
•准备工作
新建一个项目,并选择 Empty Activity;
这样,Android Studio 为我们自动生成了 MainActivity.java 和 activity_main.xml 文件;
修改 activity_mian.xml 中的代码;
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="10dp"> <Button
android:id="@+id/btn_1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:background="#33CCCC"
android:text="Button_1" /> <Button
android:id="@+id/btn_2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:background="#D54D2B"
android:text="Button_2" />
</LinearLayout>在该布局中,定义了两个 Button;
想要使用 Toast,需要定义一个弹出 Toast 的触发点;
正好我们定义了两个 Button,那我们就让点击 Button 的时候弹出一个 Toast 吧;
有两种方式定义 Button 的点击事件:
用匿名类来实现点击事件的方法
用外部类来实现点击事件的代码如下
•用匿名类来实现点击事件
修改 MainActivity.java 中的代码;
MainActivity.java
public class MainActivity extends AppCompatActivity { @Override
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);//给当前的活动加载一个布局
Button btn1 = findViewById(R.id.btn_1); //用匿名类来实现点击事件的方法
btn1.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Toast.makeText(MainActivity.this, "Button_1", Toast.LENGTH_SHORT).show();
}
});
}
}
•运行效果
•用外部类来实现点击事件
修改 MainActivity.java 中的代码;
MainActivity.java
public class MainActivity extends AppCompatActivity { @Override
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);//给当前的活动加载一个布局
Button btn2 = findViewById(R.id.btn_2);
btn2.setOnClickListener(new MyClick());
} //用外部类来实现点击事件的代码如下
class MyClick implements View.OnClickListener { @Override
public void onClick(View v) {
Toast t = Toast.makeText(MainActivity.this, "Button_2", Toast.LENGTH_SHORT);
t.show();
}
}
}当然,你也可以这么写;
public class MainActivity extends AppCompatActivity implements View.OnClickListener{ @Override
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);//给当前的活动加载一个布局
Button btn2 = findViewById(R.id.btn_2);
btn2.setOnClickListener(this);
} @Override
public void onClick(View v) {
Toast t = Toast.makeText(MainActivity.this, "Button_2", Toast.LENGTH_SHORT);
t.show();
}
}让 MainActivity 实例化 View.OnClickListener 接口,并重写 onClick() 方法;
•运行效果
•小结
在活动中,通过 findViewById() 方法获取到在布局文件中定义的元素;
得到按钮实例后,我们通过 setOnClickListener() 方法为按钮注册一个监听器;
点击按钮就会执行监听器中的 onClick() 方法;
因此将点击按钮弹出 Toast 的功能编写在 onClick() 方法中;
Toast 的用法非常简单,通过静态方法 makeText() 创建出一个 Toast 对象;
然后调用 show() 方法将 Toast 显示出来即可;
•自定义 Toast
首先,在 layout 文件夹下自定义一个 .xml 文件,并命名为 toast.xml;
在里面放入如下代码:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center"> <com.example.uibestpractice.CircleImageView
android:id="@+id/toast_image_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:scaleType="centerInside" /> <TextView
android:id="@+id/toast_text_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/toast_image_view"
android:layout_centerHorizontal="true"
android:gravity="center"
android:textColor="@color/black"
android:textSize="15sp" />
</RelativeLayout>其中的 <CircleImageView> 控件是我之前自定义的圆形 ImageView,详情见我这篇博客;
然后,新建一个 Empty Activity ,命名为 TestTostActivity;
这样Android Studio自动为我们生成了 TestToastActivity.java 和 activity_test_toast.xml;
在 activity_test_toast.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"
android:background="@color/blue"
android:padding="10dp"> <TextView
android:id="@+id/tv"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:text="测试自定义 Toast"
android:textSize="20sp"
android:textColor="@color/black"/> <LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:orientation="horizontal"> <Button
android:id="@+id/btn_apple"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Apple"/> <Button
android:id="@+id/btn_banana"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Banana" />
</LinearLayout>
</RelativeLayout>在 TestToastActivity.java 中设置相应的点击事件,并设置 Toast,代码如下:
public class TestToastActivity extends AppCompatActivity { private Button mBtnApple;
private Button mBtnBanana;
private Toast toast;
private LayoutInflater inflater;
private View view;
private ImageView Iv;
private TextView Tv; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_test_toast); toast = new Toast(getApplicationContext());
inflater = LayoutInflater.from(TestToastActivity.this);
view = inflater.inflate(R.layout.toast, null);
Iv = view.findViewById(R.id.toast_image_view);//找到 toast.xml 中 ImageView 控件的 id
Tv = view.findViewById(R.id.toast_text_view);//找到 toast.xml 中 TextView 控件的 id mBtnApple = findViewById(R.id.btn_apple);
mBtnBanana = findViewById(R.id.btn_banana); mBtnApple.setOnClickListener(new View.OnClickListener() { @Override
public void onClick(View v) { Iv.setImageResource(R.mipmap.apple_96px);
Tv.setText("Apple"); toast.setView(view);
toast.setDuration(Toast.LENGTH_SHORT);
toast.setGravity(Gravity.CENTER, 0, 0);//将该toast居中显示
toast.show();
}
});
mBtnBanana.setOnClickListener(new View.OnClickListener() { public void onClick(View v) {
Iv.setImageResource(R.mipmap.banana_96px);
Tv.setText("Banana"); toast.setView(view);
toast.setDuration(Toast.LENGTH_SHORT);//Toast 显示的时长
toast.setGravity(Gravity.CENTER, 0, 0);//将该toast居中显示
toast.show();
}
});
}
}
•运行效果
•声明
参考资料:
MainActivity
Android Studio 之 在活动中使用 Toast的更多相关文章
- 使用Android Studio调试UiAutomator过程中遇到的问题
声明: 这里纪录了个人学习和使用Android Studio调试UiAutomator过程中遇到遇到的问题,不定时进行更新,欢迎一起交流学习 1.Excution faild for task ‘:a ...
- Android studio在使用过程中的问题总汇!
使用android studio也有一段时间了,汇总了一下这段时间内遇到一些常见问题,希望能够帮助到大家! 一.字体大小问题 在android studio的使用过程中没有发现类似于Eclipse中的 ...
- Android 高级UI设计笔记17:Android在非UI线程中显示Toast
1. 子线程的Toast怎么显示不出来? 因为Toast在创建的时候会依赖于一个Handler,并且一个Handler是需要有一个Looper才能够创建,而普通的线程是不会自动去创建一个Looper对 ...
- 在Android Studio 0.5.2中使用ArcGIS Android SDK
环境 操作系统:Mac OSX 10.8.5Android Studio: 0.5.2ArcGIS Android SDK: 10.2.3 操作步骤 在Android Studio中新建一个Modul ...
- Android Studio:layout-sw600dp文件夹中创建activity_main.xml
1.右键res文件夹,新建Android resource directory文件夹 2.在resource type中选择layout 3.将Directory name命名为layout-sw6 ...
- 解决Android Studio 2.2.3中添加.cpp .h文件在Project->Android无法显示,无法正常编译问题。
搭配使用 Android Studio 2.2 或更高版本与 Android Plugin for Gradle 版本 2.2.0 或更高版本时,您可以将 C 和 C++ 代码编译到 Gradle 与 ...
- Android Studio项目/Flutter 案例中Gradle报错通用解决方案(包括Unable to tunnel through proxy问题)
目录 Step 1:修改Gradle版本为本地版本 Step 2:修改classpath为Android Studio版本 Step 3:关闭代理 Step 1:修改Gradle版本为本地版本 ...
- Android Studio在代码重构中的妙用
代码重构几乎是每个程序员在软件开发中必须要不断去做的事情,以此来不断提高代码的质量.Android Stido(以下简称AS)以其强大的功能,成为当下Android开发工程师最受欢迎的开发工具,也是A ...
- android studio: 实现类似于XCode中的#pragma mark的效果
代码行数写多了,想找一个指定的方法真困难,关键有时候记不住方法的名字,用Ctrl+O也不好使,突然想到以前做iOS开发时,XCode里有一个#pragma mark的功能,很好用:在代码中定义这样一个 ...
随机推荐
- Taro 开发踩坑指南 (小程序,H5, RN)
Taro 开发踩坑指南 (小程序,H5, RN) css taro 如何展示多行文本省略号 https://www.cnblogs.com/xgqfrms/p/12569057.html UI 设计稿 ...
- 同步vscode的setting.json和extensions
vc 详情 $ npm i -g vscode-config $ vc config --token <your github token> $ vc config --id <yo ...
- windows 隐藏desktop.ini文件
原文 在文件夹选项>查看 勾选"隐藏受保护的操作系统文件(推荐)"选项
- betterscroll上拉加载
mounted(){ var that=this; setTimeout(()=>{ let scroll = new BScroll(document.getElementById('wrap ...
- 宝塔面板配置Let's Encrypt证书自动续签失效及解决方案
一.背景小故事 笔者手里有个朋友交给我去日常运维项目是PHP+微信小程序,部署在Linux系统上. 这个项目是用宝塔面板去进行日常的可视化运维管理,用起来蛮香的. 如不清楚宝塔的同学,可以自行了解,这 ...
- 源码分析:Phaser 之更灵活的同步屏障
简介 Phaser 是 JDK 1.7 开始提供的一个可重复使用的同步屏障,功能类似于CyclicBarrier和CountDownLatch,但使用更灵活,支持对任务的动态调整,并支持分层结构来达到 ...
- 谈一下HashMap的底层原理是什么?
底层原理:Map + 无序 + 键唯一 + 哈希表 (数组+Entry)+ 存取值 1.HashMap是Map接口的实现类.实现HashMap对数据的操作,允许有一个null键,多个null值. Co ...
- Oracle数据库配置监听程序
最近在学习Oracle数据库,从安装到配置监听程序基本靠百度... 不得不说百度真的很nice!!! 下面是我的Oracle服务端(PL/SQL Developer)出现的监听程序的问题及我解决的方法 ...
- 后端程序员之路 35、Index搜索引擎实现分析4-最终的正排索引与倒排索引
# index_box 提供搜索功能的实现- 持有std::vector<ITEM> _buffer; 存储所有文章信息- 持有ForwardIndex _forward_index; ...
- 后端程序员之路 26、CAP理论
可能是CAP理论的最好解释 - 西代零零发 - 博客频道 - CSDN.NEThttp://blog.csdn.net/dc_726/article/details/42784237 CAP理论 - ...



