- 浏览: 441796 次
- 性别:
- 来自: 北京
最新评论
-
咖啡动力:
mWebView载入的当然是网址了
Android使用webview,触发网页中链接的事件 以及webview加载本地html、本apk内html和远程URL -
咖啡动力:
还有我是女士哦
Android延迟执行 handler类的实现 -
咖啡动力:
是吗,还有这事,谢谢哦
Android延迟执行 handler类的实现 -
cfm1989:
兄弟,是这样的!!!!让我纠结了半个小时,要细心点mHandl ...
Android延迟执行 handler类的实现 -
白色蜻蜓:
遇到个iPhone开发者不易
从UIView转换UIImage(截屏是一样的)
Toast用于向用户显示一些帮助/提示。定义一个属于你自己的Toast。
举例5种效果
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>
举例5种效果
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>
发表评论
-
Android软键盘弹出不影响布局的方法
2013-02-18 13:55 6327The AndroidManifest.xml File &l ... -
android刷新界面某个view
2013-02-17 17:32 1711private SlipButton button = (Sl ... -
Activity转换为View
2011-08-09 14:53 2600FrameLayout container = (FrameL ... -
android加载drawable中的图片
2011-08-05 14:58 2045android加载图片有两种方式 一种是int,一种是Draw ... -
Can't create handler inside thread that has not called Looper.prepare()
2011-07-01 11:58 845807-01 02:01:12.431: WARN/System ... -
Android中的Handler, Looper, MessageQueue和Thread
2011-07-01 11:41 1072前几天,和同事探讨了一下Android中的消息机制,探究了消息 ... -
主要讲解下AsyncTask的使用
2011-07-01 11:10 1218本文章主要讲解下AsyncTa ... -
android ActivityGroup管理activity,activity转换成view
2011-06-29 16:45 5485Intent intent = new Intent(t ... -
android返回键的工作原理
2011-06-29 16:42 1725// back键默认执行方法 // BaseView.t ... -
android中SimpleAdepter的使用
2011-06-23 17:23 1043//存放需要适配的数据 private List<Ma ... -
Android中常常使用shape来定义控件
2011-06-23 14:22 1201Android中常常使用shape来定义控件的一些显示属性,今 ... -
apk打包基础知识
2011-06-23 12:15 1674原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 ... -
android中xml文件注意事项
2011-06-16 11:09 980xml文件 android:id <TabWidget ... -
android中的tab。TabHost ,TabWidget
2011-06-14 18:01 3785步骤 1.建立两个Activity,作为tab内容 (我这里 ... -
android从xml创建控件(按钮)或直接创建控件
2011-06-14 15:26 3274android从xml创建控件 根据xml创建view (r ... -
WARNING: Application does not specify an API level requirement!
2011-06-14 10:51 11563修改AndroidManifest.xml,添加sdkVers ... -
bytes保存成图片存入sdcard卡中
2011-04-06 15:35 1513bytes pbWk; //Android获取sdcard卡 ... -
android加载文件的方式,路径的写法
2011-04-06 15:23 2132//wView.loadUrl("file:///a ... -
Installation error: INSTALL_FAILED_INSUFFICIENT_STORAGE
2011-04-02 11:11 22522.2之前的所有模拟器都会遇到的问题,机器内存的瓶颈,当apk ... -
一个apk调用另外一个apk的activity
2011-03-30 11:54 1240系统提供了很多可以直接调用的Activity,通过指定的I ...
相关推荐
本篇文章将深入探讨如何在Android中自定义`Toast`的背景和添加图片,以实现更加个性化的用户体验。 首先,我们要了解`Toast`的基本用法。在Android中,我们可以通过`Toast.makeText()`方法来创建一个`Toast`实例,...
8. **多线程问题** 注意,Toast操作应在主线程中执行,因为UI更新必须在主线程进行。如果在子线程中创建或显示Toast,可能会导致ANR(Application Not Responding)错误。 9. **生命周期管理** 在Activity的生命...
8. 多线程考虑:考虑到UI操作必须在主线程执行,源码中可能包含了确保在主线程中创建和显示Toast的逻辑,如使用Handler或者runOnUiThread()方法。 9. 代码注释与文档:良好的源码应当有清晰的注释,解释关键部分的...
7. **线程安全**:考虑到多线程环境,需要确保对toast实例的操作是线程安全的。可以使用Qt的信号和槽机制,在主线程和工作线程之间进行通信,以确保数据同步。 通过以上步骤,我们就可以在Qt环境中实现一个功能完备...
以下是对`AndroidToast`以及`ToastUtils`工具类的详细讲解。 ### Android Toast `Toast`是Android SDK中的一个类,它提供了一种简单的方法来显示包含文本信息的小型视图。`Toast`有三种显示时长:`LENGTH_SHORT`、...
以上就是关于Android中`Toast`的使用详解,包括基础用法、自定义布局、位置调整、动画效果、多行显示以及线程安全和延迟显示等多个方面。理解并熟练掌握这些技巧,将使你的Android应用交互更加友好和个性化。
接下来,我们将会深入探讨`Toast`的使用方法,以及如何自定义`Toast`以满足更个性化的展示需求。 1. **基础使用** 创建一个基本的`Toast`非常简单,只需要以下几步: ```java Toast.makeText(context, "这是一条...
然而,在某些情况下,我们可能会遇到`Toast`重复显示的问题,这可能是由于不当的调用或者多线程环境中的并发问题导致的。本文将深入探讨这个问题,并提供解决方案。 首先,我们要理解`Toast`的工作原理。`Toast`在...
然而,原生的`Toast`存在一些限制,例如显示速度较慢,不能同时显示多个,以及动画效果相对单一。在标题为“自定义Toast”的主题中,开发者尝试通过模拟手游中的疯狂点击效果,实现多`Toast`同时出现的快速响应功能...
6. 处理多线程问题:如果`Toast`在非主线程中显示,需要确保在正确的线程中进行显示操作,通常使用`runOnUiThread`或`Handler`来处理。 7. 销毁`Toast`:当不再需要`Toast`时,可以调用`cancel()`方法来取消显示,...
在上述`MyToast`类中,我们创建了一个静态内部类`SingletonHolder`,确保在多线程环境下安全地初始化`instance`。`getInstance()`方法用于获取单例,`showSuccess()`和`showError()`方法则分别用于显示成功的提示...
考虑到`Toast`可能会在多个线程中使用,确保其线程安全是必要的。可以使用`Handler`或者`runOnUiThread()`来保证`Toast`在主线程中显示。 9. **缓存机制** 如果频繁地创建和销毁`Toast`对象,可能会对性能产生...
6. **多线程环境下的Toast** - 如果在非主线程中显示Toast,必须确保操作在Handler或者`runOnUiThread()`方法中执行,因为UI操作必须在主线程进行。 7. **自定义Toast的背景颜色和文字样式** - 通过设置TextView...
在Android开发中,`Toast`是...通过以上讲解,你应该对如何在Android应用中使用`Toast`以及其在数据加载、内容加载和网络图片加载提示中的应用有了清晰的理解。在实际开发中,灵活运用这些知识可以提高应用的用户体验。
7. 多线程问题: Toast的创建和显示应确保在主线程中进行,因为UI操作必须在主线程。如果在子线程中创建,需要使用runOnUiThread方法或Handler。 8. 代码复用: 良好的代码组织可以使自定义Toast易于复用。可以将...
本篇文章将深入探讨`Toast`的各种用法,包括基本用法、自定义样式以及一些实用技巧。 ### 1. `Toast`的基本用法 在Android中,`Toast`类提供了一种简单的方法来显示消息。创建`Toast`的基本步骤如下: ```java //...
6. **多线程与Handler** 如果需要在非主线程中使用Toast,必须确保所有的UI操作都在主线程进行。可以使用Handler或`runOnUiThread()`方法来确保这一点。 7. **自定义Duration** 默认的Toast显示时长有短(LENGTH_...
这个压缩包“五种不同的Toast效果.zip”可能包含了一些自定义实现的`Toast`效果示例,让我们来详细探讨一下`Toast`以及如何在Android中实现各种自定义效果。 `Toast`的基本用法: `Toast`类在Android SDK中提供了...