转--android Toast大全(五种情形)建立属于你自己的Toast_孙瑞宇的博客-程序员宝宝

技术标签: java  移动开发  

 

  Toast用于向用户显示一些帮助/提示。下面我做了5中效果,来说明Toast的强大,定义一个属于你自己的Toast。

1.默认效果

代码

Toast.makeText(getApplicationContext(), "默认Toast样式",
     Toast.LENGTH_SHORT).show();

 

2.自定义显示位置效果

代码

toast = Toast.makeText(getApplicationContext(),
     "自定义位置Toast", Toast.LENGTH_LONG);
   toast.setGravity(Gravity.CENTER, 0, 0);
     toast.show();

 

3.带图片效果

 

代码

toast = Toast.makeText(getApplicationContext(),
     "带图片的Toast", Toast.LENGTH_LONG);
   toast.setGravity(Gravity.CENTER, 0, 0);
   LinearLayout toastView = (LinearLayout) toast.getView();
   ImageView imageCodeProject = new ImageView(getApplicationContext());
   imageCodeProject.setImageResource(R.drawable.icon);
   toastView.addView(imageCodeProject, 0);
   toast.show();

 

4.完全自定义效果

代码

LayoutInflater inflater = getLayoutInflater();
   View layout = inflater.inflate(R.layout.custom,
     (ViewGroup) findViewById(R.id.llToast));
   ImageView image = (ImageView) layout
     .findViewById(R.id.tvImageToast);
   image.setImageResource(R.drawable.icon);
   TextView title = (TextView) layout.findViewById(R.id.tvTitleToast);
   title.setText("Attention");
   TextView text = (TextView) layout.findViewById(R.id.tvTextToast);
   text.setText("完全自定义Toast");
   toast = new Toast(getApplicationContext());
   toast.setGravity(Gravity.RIGHT | Gravity.TOP, 12, 40);
   toast.setDuration(Toast.LENGTH_LONG);
   toast.setView(layout);
   toast.show();

 

5.其他线程

 代码

new Thread(new Runnable() {
    public void run() {
     showToast();
    }
   }).start();

 

 

完整代码

1.Main,java

package com.wjq.toast;

import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.View.OnClickListener;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;

public class Main extends Activity implements OnClickListener {
 Handler handler = new Handler();

 @Override
 public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.main);

  findViewById(R.id.btnSimpleToast).setOnClickListener(this);
  findViewById(R.id.btnSimpleToastWithCustomPosition).setOnClickListener(
    this);
  findViewById(R.id.btnSimpleToastWithImage).setOnClickListener(this);
  findViewById(R.id.btnCustomToast).setOnClickListener(this);
  findViewById(R.id.btnRunToastFromOtherThread).setOnClickListener(this);

 }

 public void showToast() {
  handler.post(new Runnable() {

   @Override
   public void run() {
    Toast.makeText(getApplicationContext(), "我来自其他线程!",
      Toast.LENGTH_SHORT).show();

   }
  });
 }

 @Override
 public void onClick(View v) {
  Toast toast = null;
  switch (v.getId()) {
  case R.id.btnSimpleToast:
   Toast.makeText(getApplicationContext(), "默认Toast样式",
     Toast.LENGTH_SHORT).show();
   break;
  case R.id.btnSimpleToastWithCustomPosition:
   toast = Toast.makeText(getApplicationContext(),
     "自定义位置Toast", Toast.LENGTH_LONG);
   toast.setGravity(Gravity.CENTER, 0, 0);
   toast.show();
   break;
  case R.id.btnSimpleToastWithImage:
   toast = Toast.makeText(getApplicationContext(),
     "带图片的Toast", Toast.LENGTH_LONG);
   toast.setGravity(Gravity.CENTER, 0, 0);
   LinearLayout toastView = (LinearLayout) toast.getView();
   ImageView imageCodeProject = new ImageView(getApplicationContext());
   imageCodeProject.setImageResource(R.drawable.icon);
   toastView.addView(imageCodeProject, 0);
   toast.show();
   break;
  case R.id.btnCustomToast:
   LayoutInflater inflater = getLayoutInflater();
   View layout = inflater.inflate(R.layout.custom,
     (ViewGroup) findViewById(R.id.llToast));
   ImageView image = (ImageView) layout
     .findViewById(R.id.tvImageToast);
   image.setImageResource(R.drawable.icon);
   TextView title = (TextView) layout.findViewById(R.id.tvTitleToast);
   title.setText("Attention");
   TextView text = (TextView) layout.findViewById(R.id.tvTextToast);
   text.setText("完全自定义Toast");
   toast = new Toast(getApplicationContext());
   toast.setGravity(Gravity.RIGHT | Gravity.TOP, 12, 40);
   toast.setDuration(Toast.LENGTH_LONG);
   toast.setView(layout);
   toast.show();
   break;
  case R.id.btnRunToastFromOtherThread:
   new Thread(new Runnable() {
    public void run() {
     showToast();
    }
   }).start();
   break;

  }

 }
}

 

2.main,xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:orientation="vertical" android:layout_width="fill_parent"
 android:layout_height="fill_parent" android:padding="5dip" android:gravity="center">
 <Button android:layout_height="wrap_content"
  android:layout_width="fill_parent" android:id="@+id/btnSimpleToast"
  android:text="默认"></Button>
 <Button android:layout_height="wrap_content"
  android:layout_width="fill_parent" android:text="自定义显示位置"
  android:id="@+id/btnSimpleToastWithCustomPosition"></Button>
 <Button android:layout_height="wrap_content"
  android:layout_width="fill_parent" android:id="@+id/btnSimpleToastWithImage"
  android:text="带图片"></Button>
 <Button android:layout_height="wrap_content"
  android:layout_width="fill_parent" android:text="完全自定义"
  android:id="@+id/btnCustomToast"></Button>
 <Button android:layout_height="wrap_content"
  android:layout_width="fill_parent" android:text="其他线程"
  android:id="@+id/btnRunToastFromOtherThread"></Button>

</LinearLayout>

 

3.custom.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
 xmlns:android="http://schemas.android.com/apk/res/android"
 android:layout_height="wrap_content" android:layout_width="wrap_content"
 android:background="#ffffffff" android:orientation="vertical"
 android:id="@+id/llToast" >
 <TextView
  android:layout_height="wrap_content"
  android:layout_margin="1dip"
  android:textColor="#ffffffff"
  android:layout_width="fill_parent"
  android:gravity="center"
  android:background="#bb000000"
  android:id="@+id/tvTitleToast" />
 <LinearLayout
  android:layout_height="wrap_content"
  android:orientation="vertical"
  android:id="@+id/llToastContent"
  android:layout_marginLeft="1dip"
  android:layout_marginRight="1dip"
  android:layout_marginBottom="1dip"
  android:layout_width="wrap_content"
  android:padding="15dip"
  android:background="#44000000" >
  <ImageView
   android:layout_height="wrap_content"
   android:layout_gravity="center"
   android:layout_width="wrap_content"
   android:id="@+id/tvImageToast" />
  <TextView
   android:layout_height="wrap_content"
   android:paddingRight="10dip"
   android:paddingLeft="10dip"
   android:layout_width="wrap_content"
   android:gravity="center"
   android:textColor="#ff000000"
   android:id="@+id/tvTextToast" />
 </LinearLayout>
</LinearLayout>

 

 源码下载

转载于:https://www.cnblogs.com/awkflf11/p/4364260.html

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_30443813/article/details/97941345

智能推荐

渗透测试常用端口利用总结_daxi0ng的博客-程序员宝宝

端口 服务 入侵方式 21 ftp/tftp/vsftpd文件传输协议 爆破/嗅探/溢出/后门 22 ssh远程连接 爆破/openssh漏洞 23 Telnet远程连接 爆破/嗅探/弱口令 25 SMTP邮件服务 邮件伪造 53 DNS域名解析系统 域传送/劫持/缓存投毒/欺骗 67/68 dh...

Android程序包管理(1)--PKMS启动过程_leif_123的博客-程序员宝宝

一、PKMS启动过程1、重要文件目录介绍1.目录:/system/ect/permissions/xxx.xml:加载系统feature/system/ect/permissions/platform.xml:为核心系统进程uid/gid分配默认权限permission/group:用于建立linux层gid和Android层permission之间的映射关系assig...

Redis与Memcached的区别_码农_程序员的博客-程序员宝宝

在Redis中,并不是所有的数据都一直存储在内存中的。这是和Memcached相比一个最大的区别。Redis只会缓存所有的 key的信息,如果Redis发现内存的使用量超过了某一个阀值,将触发swap的操作,Redis根据“swappability = age*log(size_in_memory)”计 算出哪些key对应的value需要swap到磁盘。然后再将这些key对应的value持久化到磁盘中,同时在内存中清除。这种特性使得Redis可以 保持超过其机器本身内存大小的数据。当然,机器本身的内存必须要

Shell传入参数的处理_andylauren的博客-程序员宝宝

引言写程序的时候经常要处理命令行参数,本文描述在Bash下的命令行处理方式。选项与参数:如下一个命令行:./test.sh -f config.conf -v --prefix=/home我们称-f为选项,它需要一个参数,即config.conf, -v 也是一个选项,但它不需要参数。--prefix我们称之为一个长选项,即选项本身多于一个字符,它也需要一个参数,用等号连接

skewness and kurtosis偏态和峰度的解释和演示、数据的偏度和峰度——df.skew()、df.kurt()_汪雯琦的博客-程序员宝宝_skewness and kurtosis

skewness (偏态)正偏态分布(positive skewness distribution)是指频数分布的高峰偏于左侧,偏态系数为正值的频数分布形态。偏态分布分为正偏态和负偏态。当均值大于众数时称为正偏态;当均值小于众数时称为负偏态。定义上偏度是样本的三阶标准化矩,定义式如下,其中k2,k3分别表示二阶、三阶中心矩:还可以这么来看:kurtosis(峰度)==峰度(peake...

随便推点

线程与内核绑定_持成的博客-程序员宝宝_指定线程内核

多内核主机上,创建了多个线程,可以把线程绑定到指定的内核上。这样可以充分发挥多个内核的性能优势,减少上下文切换。线程与内核绑定方法:1、头文件 #include #include 2、绑定1)获取cpu内核数目int cpu_num = get_nprocs(); 2)创建多个线程pthread_t thread_id;pthread

Dcloud中mui 微信支付和支付宝支付接口完美实现付款代码(PHP支付宝demo)_二当家的素材网的博客-程序员宝宝

Dcloud中mui 微信支付和支付宝支付接口完美实现付款代码(PHP支付宝demo),官网上下载的一直报‘创建订单错误‘和各种报错,于是自己就试着写了一个demo,亲测,可用。演示可以参考这里:http://www.erdangjiade.com/php/2475.html1.先上图片,由于mui自己集成了支付宝,所以不需要配置sdk和获取appid,微信配置有些小细节,不注意就会出

sqlite3结构体与实际打开的文件描述符之间的关系_darkpush的博客-程序员宝宝_sqlite3 结构体

我们了解sqlite3数据库是一个文件格式的数据库,那显然它必然至少会持有一个打开的文件描述符,本文简单介绍 sqlite3结构体本身与这个文件描述符之间的关系,以及调用sqlite3_open最终打开这个文件描述符的流程。

SpringBoot --- 整合Elasticsearch_百世经纶『一页書』的博客-程序员宝宝

1.SpringBoot --- 整合Elasticsearch 2.elasticsearch cluster 搭建 3.elasticsearch知识点

SmartUpload上传文件路径_Keplery_的博客-程序员宝宝_smartupload路径

使用SmartUpload的功能放在了WebRoot文件夹下的UploadTest文件夹中,包括:upload.jspdoUpload.jspdownload.jspdo_download.jsp上传的指定文件夹名为uploadFiles,起初因为不知道会上传到哪个地方,于是分别在WebRoot、UploadTest下各建立一个uploadFiles文件夹。上传代码Sma...

查看python安装路径以及pip安装的包_Mr-Cat伍可猫的博客-程序员宝宝

window下命令where python查看pip安装了多少包pip list如果电脑有两个python,一个python2,一个python3,使用上面的命令查看的是python3中pip安装的包。要查看python2pip安装的包,如下:python2 -m pip list 同理要查看python3 的pip安装的包,则如下:python3 -m pip list上面可能有的人会出现“py...

推荐文章

热门文章

相关标签