android-Toast
toast弹窗的用法
toast弹窗的用法
Toast弹窗是一种用户友好的弹出信息提示方式。
它消除了用户交互设计中需要打开新页面来显示简短信息带来的流畅度问题。
Toast弹窗可以在不影响用户正在使用当前页面时,在屏幕上提供简洁但丰富的信息提醒。
Toast弹窗的用法主要有以下几点:
1、当界面上一些操作成功或失败时,可以使用Toast弹窗来提醒用户,例如:添加联系人成功后,弹出“添加成功”的toast来提醒用户;
2、Toast弹窗可以通知用户需要特别关注的消息,例如:收到一条新消息,弹出“新消息”的toast来提醒用户;
3、Toast弹窗可以提醒用户在界面上部署的操作,例如:点击某个按钮,弹出“这里是某个按钮”的toast来提醒用户;
4、Toast弹窗也可以用来提示用户某些重要的操作,例如:用户要求清除APP缓存,弹出“正在清除缓存,请稍候”的toast来提醒用户;
5、Toast弹窗可以用来提供小量的提示信息,例如:用户需要输入某个固定格式的文本,弹出“请输入固定格式的文本”的toast来提示用户。
Toast弹窗是一种非常有用的用户友好的消息提醒工具,使用起来简单,没有太多的限制,是开发者在设计界面的时候的理想选择。
android的toast的用法
android的toast的用法Toast是Android中常用的一个控件,用于在屏幕上显示简单的信息提示,常用于在应用程序中提供反馈信息。
本文将详细介绍Toast 的用法、属性、示例代码以及注意事项,帮助开发者更好地掌握Toast 的使用。
一、Toast的概述Toast是Android系统提供的一个简单的消息提示框,它可以显示一条短小的文本信息,并在用户点击关闭前停留在屏幕上。
Toast的主要作用是向用户提供简短的反馈信息,通常用于指示应用程序的状态或执行结果。
二、Toast的属性1. toastView:Toast的视图对象,用于显示文本信息。
2. duration:Toast的显示时间,单位为毫秒,默认值为Toast.LENGTH_SHORT,也可以设置为Toast.LENGTH_LONG。
3. text:要显示的文本信息,可以是字符串资源或普通文本。
三、Toast的用法1. 在代码中创建Toast:可以使用Toast类的静态方法makeText 创建Toast对象,并设置要显示的文本信息和显示时间。
2. 显示Toast:通过Toast对象的show方法将Toast显示在屏幕上。
3. 取消Toast:在用户点击关闭按钮或屏幕前,可以调用cancel 方法取消Toast的显示。
四、示例代码下面是一个简单的示例代码,演示如何使用Toast显示文本信息:```java// 创建Toast对象并设置文本信息Toast toast = Toast.makeText(context, "提示信息", Toast.LENGTH_SHORT);// 将Toast显示在屏幕上toast.show();```在上面的示例中,通过context创建了一个Toast对象,并设置了要显示的文本信息和显示时间。
然后调用show方法将Toast显示在屏幕上。
五、注意事项1. Toast只能显示一条简短的文本信息,不适合显示复杂的提示信息。
3.5.5 Snackbar[共3页]
3.5 提示信息Toast和Snackbar▲图3-23 自定义Toast3.5.4 避免内存泄露下列这段简单的代码,可能会出现内存泄露!一定要注意:Toast.makeText(MainActivity.this, "Hello", Toast.LENGTH_SHORT).show();什么是内存泄露呢?就是该回收的内存由于种种原因没有被回收,还驻留在内存中。
内存泄露一定要尽量避免,可能一处小小的内存泄露就会导致整个应用卡顿,甚至崩溃。
为什么上面的代码会导致内存泄露呢?原因在于:如果在Toast消失之前,Toast持有了当前Activity,而此时,用户点击了返回键,导致Activity无法被GC销毁,这个Activity就引起了内存泄露。
一个很简单的解决方法:所有和当前Activity无关的Context都可以传入,避免内存泄露的方法同样适用其他需要传入Context的地方。
就像这样:Toast.makeText(getApplicationContext(), "Hello", Toast.LENGTH_SHORT).show();getApplicationContext()是整个应用的上下文,不会持有Activity对象。
3.5.5 SnackbarMaterial Design之前,Android的很多提示工作都是由Toast来完成的,Toast的缺点在于不能提供交互,而Material Design包中的SnackBar完美地解决了这个问题。
先来看看效果,如图3-24所示,底部就是Snackbar。
要想使用Snackbar,必须在你的项目中依赖com.android.support:design,版本号优先选最新的。
65。
(完整版)Android课后习题
第1章Android 基础入门一、填空题1、Android 是Google 公司基于Linux 、操作系统2、Android 系统采用分层结构,应用程序层、应用程序框架层、核心类库、Linux 内核。
3、ADB 的常见指令中,用于开启ADB 服务的是adb start-server。
4、在Android 程序中,src 目录用于放置程序的java 代码文件5、Android 程序开发完成后,如果要发布到互联网上供别人使用,打包成.apk 文件二、判断题1、Android 实际上就是一个手机。
×2、WCDMA 是中国自己独自定制的3G 标准,中国移动使用的就是这种标准。
×3、android 第一个版本Android 1.1是2008年9月发布的。
√4、gen 目录是自动生成的,主要有一个R.java 文件,该文件可手动修改。
×5、AndroidManifest.xml 文件是整个程序的配置文件。
√三、选择题1、随着智能手机的发展,移动通信技术也在不断升级,目前应用最广泛的是(C )A 、1GB 、2GC 、3GD 、4G2、ADT Bundle中包含了三个重要组成部分,分别是(ABC )A 、EclipseB 、SDKC 、SDK Manager,exeD 、ADB3、应用程序层是一个核心应用程序的集合,主要包括(B )A 、活动管理器B 、短信程序C 、音频驱动D 、Dalivik 虚拟机4、ADB 的常见指令中“列出所有设备”的指令是(C )A 、adb uninstallB 、adb installC 、adb deviceD 、adb emulator -avd5、创建程序时,填写的Application Name表示(A )A 、应用名称B 、项目名称C 、项目的包名D 、类的名字四、简答题1、简要说明Android 体系结构中每个层的功能。
Android 体系结构总共包含四层,分别是:● 应用程序层:设备上安装的软件应用都属于这一层● 应用程序框架层:包含应用API● 核心类库:包含系统库和运行环境,系统库包含了底层C 代码;运行环境包含了Java的核心库和Dalvik 虚拟机● Linux 内核:提供Android 的底层驱动。
android中Toast的5种用法转内附android权限大全
android中Toast的5种用法转内附android权限大全Android中Toast的5种用法Toast是Android开发中常用的一种提示方式,它可以在屏幕上显示短暂的提示信息,帮助我们向用户传递必要的信息。
本文将介绍Android中Toast的5种用法,以及附上Android权限大全供参考。
1. 基本用法首先,我们来看一下Toast的基本用法。
在Android开发中,可以通过以下代码创建一个Toast对象,并显示出来:```javaToast.makeText(context, text, duration).show();```其中,参数context表示上下文对象,一般传入当前的Activity;text表示要显示的文本内容;duration表示显示时长,有两个可选值:Toast.LENGTH_SHORT表示短时显示,大约2秒钟;Toast.LENGTH_LONG表示长时显示,大约3.5秒钟。
例如,要显示一个简单的提示"Hello, Toast!",可以使用以下代码:```javaToast.makeText(MainActivity.this, "Hello, Toast!",Toast.LENGTH_SHORT).show();```2. 自定义布局除了显示简单的文本提示外,Toast还可以显示自定义的布局。
通过设置自定义布局,可以实现更加丰富的提示效果。
首先,我们需要创建一个布局文件,例如toast_custom.xml,定义了要显示的布局样式。
然后,在代码中使用LayoutInflater加载该布局,并通过setView方法设置给Toast对象,最后调用show方法显示出来。
以下是示例代码:```javaLayoutInflater inflater = getLayoutInflater();View layout = inflater.inflate(yout.toast_custom, (ViewGroup) findViewById(R.id.toast_root));Toast toast = new Toast(getApplicationContext());toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0);toast.setDuration(Toast.LENGTH_SHORT);toast.setView(layout);toast.show();```3. 修改位置默认情况下,Toast显示在屏幕的中间位置。
AndroidToast的用法总结(五种用法)
AndroidToast的⽤法总结(五种⽤法)Toast⼤家都很熟,不多说。
直接上图上代码。
具体代码如下:main.xml:<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="/apk/res/android"android:layout_width="fill_parent"android:layout_height="fill_parent"android:gravity="center"android:orientation="vertical"android:padding="5dip" ><Buttonandroid:id="@+id/btnSimpleToast"android:layout_width="fill_parent"android:layout_height="wrap_content"android:text="默认" ></Button><Buttonandroid:id="@+id/btnSimpleToastWithCustomPosition"android:layout_width="fill_parent"android:layout_height="wrap_content"android:text="⾃定义显⽰位置" ></Button><Buttonandroid:id="@+id/btnSimpleToastWithImage"android:layout_width="fill_parent"android:layout_height="wrap_content"android:text="带图⽚" ></Button><Buttonandroid:id="@+id/btnCustomToast"android:layout_width="fill_parent"android:layout_height="wrap_content"android:text="完全⾃定义" ></Button><Buttonandroid:id="@+id/btnRunToastFromOtherThread"android:layout_width="fill_parent"android:layout_height="wrap_content"android:text="其他线程" ></Button></LinearLayout>custom.xml:<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="/apk/res/android" android:id="@+id/llToast"android:layout_width="wrap_content"android:layout_height="wrap_content"android:background="#ffffffff"android:orientation="vertical" ><TextViewandroid:id="@+id/tvTitleToast"android:layout_width="fill_parent"android:layout_height="wrap_content"android:layout_margin="1dip"android:background="#bb000000"android:gravity="center"android:textColor="#ffffffff" /><LinearLayoutandroid:id="@+id/llToastContent"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginBottom="1dip"android:layout_marginLeft="1dip"android:layout_marginRight="1dip"android:background="#44000000"android:orientation="vertical"android:padding="15dip" ><ImageViewandroid:id="@+id/tvImageToast"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center" /><TextViewandroid:id="@+id/tvTextToast"android:layout_width="wrap_content"android:layout_height="wrap_content"android:gravity="center"android:paddingLeft="10dip"android:paddingRight="10dip"android:textColor="#ff000000" /></LinearLayout></LinearLayout>package com.example.test;import android.app.Activity;import android.app.ActionBar;import android.app.Fragment;import android.content.Intent;import android.os.Bundle;import android.os.Handler;import android.view.Gravity;import youtInflater;import android.view.Menu;import android.view.MenuItem;import android.view.View;import android.view.View.OnClickListener;import android.view.ViewGroup;import android.widget.Button;import android.widget.EditText;import android.widget.ImageView;import android.widget.LinearLayout;import android.widget.TextView;import android.widget.Toast;import android.os.Build;public class MainActivity extends Activity implements OnClickListener {Handler handler = new Handler();@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(yout.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() {@Overridepublic void run() {Toast.makeText(getApplicationContext(), "我来⾃其他线程!",Toast.LENGTH_SHORT).show();}});}@Overridepublic 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.ic_launcher);toastView.addView(imageCodeProject, 0);toast.show();break;case R.id.btnCustomToast:LayoutInflater inflater = getLayoutInflater();View layout = inflater.inflate(yout.custom,(ViewGroup) findViewById(R.id.llToast));ImageView image = (ImageView) layout.findViewById(ImageToast);image.setImageResource(R.drawable.ic_launcher);TextView title = (TextView) layout.findViewById(TitleToast);title.setText("Attention");TextView text = (TextView) layout.findViewById(TextToast);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;}}}运⾏即可。
Android按钮单击事件的四种常用写法总结
Android 使用 Intent 传递数据的实现思路与代码 Android 不同 Activity 间数据的传递 Bundle 对象的应用 Android 系列之 Intent 传递对象的几种实例方法 Android 学习笔记--通过 Application 传递数据代码示例
} });
btn2.setOnClickListener(new OnClickListener() {
@Override public void onClick(View v) {
// TODO Auto-generated method stub Toast tst = Toast.makeText(TestButtonActivity.this, "222222222", Toast.LENGTH_SHORT); tst.show(); } }); } }
// 注意 这里没有 @Override 标签 public void onClick(View v) {
// TODO Auto-generated method stub switch (v.getId()) { case R.id.button1:
tst = Toast.makeText(this, "111111111", Toast.LENGTH_SHORT); tst.show(); break; case R.id.button2: tst = Toast.makeText(this, "222222222", Toast.LENGTH_SHORT); tst.show(); break; default: break; } } }
xml 文件代码如下:
android中的用法
android中的用法在Android开发中,Android SDK提供了一系列API和工具,用于创建和管理应用程序。
以下是一些在Android开发中常用的用法:1. Activity:Activity是Android应用程序中的一个基本单元,它是用户可以交互的界面。
一个应用程序可以包含多个Activity,每个Activity负责展示一个用户界面并响应用户的操作。
2. Intent:Intent是Android应用程序中不同组件之间通信的方式。
它可以用来启动一个Activity或传递数据到另一个组件。
通过使用Intent,您可以创建一个显式或隐式启动另一个Activity的请求。
3. Service:Service是Android应用程序中的后台服务,它可以在应用程序的主界面之外运行。
Service可以在后台执行长时间运行的任务,例如播放音乐、从网络下载数据或与远程服务器通信。
4. BroadcastReceiver:BroadcastReceiver是Android应用程序中用于接收系统广播的组件。
系统广播是Android系统发出的通知,例如电池电量低、收到短信或电话等。
通过使用BroadcastReceiver,您可以编写一个监听器来接收这些通知,并在接收到通知时执行相应的操作。
5. SQLite数据库:SQLite是一个轻量级的关系型数据库,它在Android应用程序中广泛使用。
通过使用SQLite数据库,您可以存储和检索应用程序的数据,并在需要时检索这些数据。
6. AndroidManifest.xml:AndroidManifest.xml是Android应用程序的配置文件。
它包含了应用程序的基本信息和配置信息,例如应用程序的名称、版本、权限和活动、服务、广播接收器等组件的声明。
以上是一些在Android开发中常用的用法,当然还有其他许多API 和工具可供使用。
通过使用这些API和工具,您可以创建出功能强大、用户体验良好的Android应用程序。
Android开发教程Toast格式详解
在android开发中,Toast是一个弹出的提示消息框,通过友好的方式发出提醒消息,例如软件下载成功、安装成功等。
下面我们通过以下实例学习Toast的使用,以及Toast标准显示方式、Toast自定义显示方式。
Demo程序结构图[1] res/layout目录下的 main.xml源码:1.<?xml version="1.0" encoding="utf-8"?>2.<LinearLayoutxmlns:android="/apk/res/android"3. android:orientation="vertical"4. android:layout_width="fill_parent"5. android:layout_height="fill_parent"6. >7. <TextView8. android:layout_width="fill_parent"9. android:layout_height="wrap_content"10. android:text="@string/hello"11. />12. <Button13. android:id="@+id/show"14. android:layout_width="fill_parent"15. android:layout_height="wrap_content"16. android:text="Show Toast"/>17.</LinearLayout>复制代码[2] res/layout目录下的 customtoast.xml源码:1.<?xml version="1.0" encoding="utf-8"?>2.<LinearLayout3. xmlns:android="/apk/res/android"4. android:layout_height="wrap_content"android:layout_width="wrap_content"5. android:background="#ffffffff" android:orientation="vertical"6. android:id="@+id/llToast" >7. <TextView8. android:layout_height="wrap_content"9. android:layout_margin="1dip"10. android:textColor="#ffffffff"11. android:layout_width="fill_parent"12. android:gravity="center"13. android:background="#bb000000"14. android:id="@+id/tvTitleToast" />15. <LinearLayout16. android:layout_height="wrap_content"17. android:orientation="vertical"18. android:id="@+id/llToastContent"19. android:layout_marginLeft="1dip"20. android:layout_marginRight="1dip"21. android:layout_marginBottom="1dip"22. android:layout_width="wrap_content"23. android:padding="15dip"24. android:background="#44000000" >25. <ImageView26. android:layout_height="wrap_content"27. android:layout_gravity="center"28. android:layout_width="wrap_content"29. android:id="@+id/tvImageToast" />30. <TextView31. android:layout_height="wrap_content"32. android:paddingRight="10dip"33. android:paddingLeft="10dip"34. android:layout_width="wrap_content"35. android:gravity="center"36. android:textColor="#ff000000"37. android:id="@+id/tvTextToast" />38. </LinearLayout>39.</LinearLayout>复制代码[3] src目录下的 MainActivity.java源码:1.package com.andyidea.demo;2.3.import android.app.Activity;4.import android.os.Bundle;5.import android.view.Gravity;6.import youtInflater;7.import android.view.View;8.import android.view.ViewGroup;9.import android.widget.Button;10.import android.widget.ImageView;11.import android.widget.LinearLayout;12.import android.widget.TextView;13.import android.widget.Toast;14.15.public class MainActivity extends Activity {16.17. Button btn;18.19. /** Called when the activity is first created. */20. @Override21. public void onCreate(Bundle savedInstanceState) {22. super.onCreate(savedInstanceState);23. setContentView(yout.main);24.25. btn = (Button)findViewById(R.id.show);26. btn.setOnClickListener(new View.OnClickListener() {27.28. @Override29. public void onClick(View v) {30. //标准方式31. showToast1();32. //标准方式上添加图片33. showToast2();34. //自定义显示方式35. showToast3();36. }37. });38. }39.40. /**41. * Basic Standard Toast42. * 标准提示信息方式43. */44. private void showToast1(){45. Toast toast = Toast.makeText(getApplicationContext(),"Hello, Thisis Andy!", Toast.LENGTH_LONG);46. toast.show();47. }48.49. /**50. * Adding an Image to the Standard Toast51. * 在标准显示方式基础上添加图片52. */53. private void showToast2(){54. Toast toast = Toast.makeText(getApplicationContext(),"Hello, Thisis Andy!", Toast.LENGTH_LONG);55. toast.setGravity(Gravity.CENTER, 0, 0);56. LinearLayout toastView = (LinearLayout) toast.getView();57. ImageView imageCodeProject = newImageView(getApplicationContext());58. imageCodeProject.setImageResource(R.drawable.icon);59. toastView.addView(imageCodeProject, 0);60. toast.show();61. }62.63. /**64. * Creating a Toast with Custom Layout65. * 创建自定义的提示信息方式66. */67. private void showToast3(){68. LayoutInflater inflater = getLayoutInflater();69. View layout = inflater.inflate(yout.customtoast,70. (ViewGroup) findViewById(R.id.llToast));71. ImageView image = (ImageView)layout.findViewById(ImageToast);72. image.setImageResource(R.drawable.page);73. TextView title = (TextView)layout.findViewById(TitleToast);74. title.setText("Attention");75. TextView text = (TextView)layout.findViewById(TextToast);76. text.setText("Hello, This is Andy!");77. Toast toast = new Toast(getApplicationContext());78. toast.setGravity(Gravity.RIGHT | Gravity.TOP, 12, 40);79. toast.setDuration(Toast.LENGTH_LONG);80. toast.setView(layout);81. toast.show();82. }83.}复制代码点击Show Toast按钮查看效果如下:标准方式标准方式+图片自定义显示方式如需了解更多android开发知识,请至麦子学院官网查看。
Toast介绍
例子://丰富型Toast提醒时间长短函数在mButton.setOnClickListener(new OnClickListener(){…….}函数中加showToast(Toast.LENGTH_LONG);在住ACTIVITY里面定义函数protectedvoid showToast(int type) {View view = inflateView(yout.toast);TextViewtv = (TextView) view.findViewById(R.id.toast);tv.setText("请稍候\n正在网络查询中.....");Toast toast = new Toast(this);toast.setView(view);toast.setDuration(type);toast.show();}private View inflateView(int resource) {LayoutInflater vi = (LayoutInflater)getSystemService(YOUT_INFLATER_SERVICE);return vi.inflate(resource, null);}简易型:在mButton.setOnClickListener(new OnClickListener(){…….}函数中Toast.makeText(this, "请稍候\n正在网络查询中.....",Toast.LENGTH_LONG).show();//this可以换成一个世纪对象或者有属性设置Toast toast=Toast.makeText(this, "TITLE:"+id + "NOTE:" + title, Toast.LENGTH_LONG);toast.setGravity(Gravity.TOP|Gravity.CENTER, 0, 40);toast.show();在mButton.setOnClickListener(new OnClickListener(){…….}函数中加DisplayToast("请稍后,正在网络查询中.....");//Toast提示信息查询//简易式Toast提醒时间长短函数在publicvoid DisplayToast(String str) //显示Toast提示,设为短暂时间就消失{Toast.makeText(this, str, Toast.LENGTH_LONG).show();}Android 中Toast 的用法简介Toast 是Android 中用来显示显示信息的一种机制,和Dialog 不一样的是,Toast 是没有焦点的,而且Toast 显示的时间有限,过一定的时间就会自动消失。
android中toast用法
在Android 中,Toast 是一种简单的通知机制,可以在屏幕上显示一条短暂的消息,用于向用户提供简单的提示或反馈。
以下是使用Toast 的基本用法:创建Toast 对象:javaToast toast = Toast.makeText(context, message, duration);context:上下文对象,通常是当前Activity 或Application 的上下文。
message:要显示的消息文本。
duration:Toast 的显示时长,可以是Toast.LENGTH_SHORT(短暂显示,默认值)或Toast.LENGTH_LONG(稍长显示)。
显示Toast:javatoast.show();完整的使用示例:java// 创建Toast 对象Toast toast = Toast.makeText(MainActivity.this, "Hello, Toast!", Toast.LENGTH_SHORT);// 显示Toasttoast.show();可以根据需要对Toast 进行定制,例如设置显示位置、自定义布局等。
以下是一些常用的Toast 定制方法:设置位置:javatoast.setGravity(Gravity.CENTER, 0, 0);这里将Toast 设置在屏幕中央。
自定义布局:javaLayoutInflater inflater = getLayoutInflater();View customToastView = inflater.inflate(yout.custom_toast_layout, null);toast.setView(customToastView);这里使用自定义的布局文件custom_toast_layout.xml 来替代默认的Toast 布局。
注意,Toast 一般用于简单的提示信息,如果需要显示复杂的内容或与用户进行交互,推荐使用Dialog 或Snackbar 等更合适的组件。
android中Toast的5种用法(转内附android权限大全)
Toast是Android中用来显示显示信息的一种机制,和Dialog不一样的是,Toast是没有焦点的,而且Toast显示的时间有限,过一定的时间就会自动消失。
1.默认效果:代码:T oast.makeT ext(getApplicationContext(), "默认T oast样式",T oast.LENGTH_SHORT).show();2.自定义显示位置效果:代码:toast = T oast.makeT ext(getApplicationContext(),"自定义位置T oast", T oast.LENGTH_LONG);toast.setGravity(Gravity.CENTER, 0, 0);toast.show();3.带图片效果:代码toast = T oast.makeT ext(getApplicationContext(),"带图片的Toast", T oast.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(yout.custom,(ViewGroup) findViewById(R.id.llT oast));ImageView image = (ImageView) layout.findViewById(ImageT oast);image.setImageResource(R.drawable.icon);T extView title = (T extView) layout.findViewById(TitleToast);title.setT ext("Attention");T extView text = (T extView) layout.findViewById(TextT oast);text.setT ext("完全自定义Toast");toast = new T oast(getApplicationContext());toast.setGravity(Gravity.RIGHT | Gravity.TOP, 12, 40);toast.setDuration(T oast.LENGTH_LONG);toast.setView(layout);toast.show();5.其他线程:代码:new Thread(new Runnable() { public void run() {showToast();}}).start();android.permission.ACCESS_CHECKIN_PROPERTIES允许读写访问”properties”表在checkin数据库中,改值可以修改上传( Allows read/write access to the “properties” table in the checkin database, to change values that get uploaded)android.permission.ACCESS_COARSE_LOCATION允许一个程序访问CellID或WiFi热点来获取粗略的位置(Allows an application to access coarse (e.g., Cell-ID, WiFi) location)android.permission.ACCESS_FINE_LOCATION允许一个程序访问精良位置(如GPS) (Allows an application to access fine (e.g., GPS) location)android.permission.ACCESS_LOCATION_EXTRA_COMMANDS允许应用程序访问额外的位置提供命令(Allows an application to access extra location provider commands)android.permission.ACCESS_MOCK_LOCATION允许程序创建模拟位置提供用于测试(Allows an application to create mock location providers for testing)android.permission.ACCESS_NETWORK_STATE允许程序访问有关GSM网络信息(Allows applications to access information about networks)android.permission.ACCESS_SURFACE_FLINGER允许程序使用SurfaceFlinger底层特性(Allows an application to use SurfaceFlinger’s low level features)android.permission.ACCESS_WIFI_STATE允许程序访问Wi-Fi网络状态信息(Allows applications to access information about Wi-Fi networks)android.permission.ADD_SYSTEM_SERVICE允许程序发布系统级服务(Allows an application to publish system-level services). android.permission.BATTERY_STATS允许程序更新手机电池统计信息(Allows an application to update the collected battery statistics)android.permission.BLUETOOTH允许程序连接到已配对的蓝牙设备(Allows applications to connect to paired bluetoothdevices)android.permission.BLUETOOTH_ADMIN允许程序发现和配对蓝牙设备(Allows applications to discover and pair bluetooth devices) android.permission.BRICK请求能够禁用设备(非常危险)(Required to be able to disable the device (very *erous!).) android.permission.BROADCAST_PACKAGE_REMOVED允许程序广播一个提示消息在一个应用程序包已经移除后(Allows an application to broadcast a notification that an application package has been removed)android.permission.BROADCAST_STICKY允许一个程序广播常用intents(Allows an application to broadcast sticky intents) android.permission.CALL_PHONE允许一个程序初始化一个电话拨号不需通过拨号用户界面需要用户确认(Allows an application to initiate a phone call without going through the Dialer user interface for the user to confirm the call being placed.)android.permission.CALL_PRIVILEGED允许一个程序拨打任何号码,包含紧急号码无需通过拨号用户界面需要用户确认(Allows an application to call any phone number, including emergency numbers, without going through the Dialer user interface for the user to confirm the call being placed)android.permission.CAMERA请求访问使用照相设备(Required to be able to access the camera device. )android.permission.CHANGE_COMPONENT_ENABLED_STATE允许一个程序是否改变一个组件或其他的启用或禁用(Allows an application to change whether an application component (other than its own) is enabled or not. )android.permission.CHANGE_CONFIGURATION允许一个程序修改当前设置,如本地化(Allows an application to modify the current configuration, such as locale. )android.permission.CHANGE_NETWORK_STATE允许程序改变网络连接状态(Allows applications to change network connectivity state) android.permission.CHANGE_WIFI_STATE允许程序改变Wi-Fi连接状态(Allows applications to change Wi-Fi connectivity state) android.permission.CLEAR_APP_CACHE允许一个程序清楚缓存从所有安装的程序在设备中(Allows an application to clear the caches of all installed applications on the device. )android.permission.CLEAR_APP_USER_DATA允许一个程序清除用户设置(Allows an application to clear user data)android.permission.CONTROL_LOCATION_UPDATES允许启用禁止位置更新提示从无线模块(Allows enabling/disabling location update notifications from the radio. )android.permission.DELETE_CACHE_FILES允许程序删除缓存文件(Allows an application to delete cache files)android.permission.DELETE_PACKAGES允许一个程序删除包(Allows an application to delete packages)android.permission.DEVICE_POWER允许访问底层电源管理(Allows low-level access to power management)android.permission.DIAGNOSTIC允许程序RW诊断资源(Allows applications to RW to diagnostic resources. )android.permission.DISABLE_KEYGUARD允许程序禁用键盘锁(Allows applications to disable the keyguard )android.permission.DUMP允许程序返回状态抓取信息从系统服务(Allows an application to retrieve state dump information from system services.)android.permission.EXPAND_STATUS_BAR允许一个程序扩展收缩在状态栏,Android开发网提示应该是一个类似Windows Mobile中的托盘程序(Allows an application to expand or collapse the status bar. )android.permission.FACTORY_TEST作为一个工厂测试程序,运行在root用户(Run as a manufacturer test application, running as the root user. )android.permission.FLASHLIGHT访问闪光灯,android开发网提示HTC Dream不包含闪光灯(Allows access to the flashlight ) android.permission.FORCE_BACK允许程序强行一个后退操作是否在顶层activities(Allows an application to force a BACK operation on whatever is the top activity. )android.permission.FOTA_UPDATE暂时不了解这是做什么使用的,android开发网分析可能是一个预留权限.android.permission.GET_ACCOUNTS访问一个帐户列表在Accounts Service中(Allows access to the list of accounts in the Accounts Service)android.permission.GET_PACKAGE_SIZE允许一个程序获取任何package占用空间容量(Allows an application to find out the space used by any package. )android.permission.GET_TASKS允许一个程序获取信息有关当前或最近运行的任务,一个缩略的任务状态,是否活动等等(Allows an application to get information about the currently or recently running tasks: a thumbnail representation of the tasks, what activities are running in it, etc.)android.permission.HARDWARE_TEST允许访问硬件(Allows access to hardware peripherals. )android.permission.INJECT_EVENTS允许一个程序截获用户事件如按键、触摸、轨迹球等等到一个时间流,android 开发网提醒算是hook技术吧(Allows an application to inject user events (keys, touch, trackball) into the event stream and deliver them to ANY window.)android.permission.INSTALL_PACKAGES允许一个程序安装packages(Allows an application to install packages. )android.permission.INTERNAL_SYSTEM_WINDOW允许打开窗口使用系统用户界面(Allows an application to open windows that are for use by parts of the system user interface. )android.permission.INTERNET允许程序打开网络套接字(Allows applications to open network sockets)android.permission.MANAGE_APP_TOKENS允许程序管理(创建、催后、z- order默认向z轴推移)程序引用在窗口管理器中(Allows an application to manage (create, destroy, Z-order) application tokens in the window manager. )android.permission.MASTER_CLEAR目前还没有明确的解释,android开发网分析可能是清除一切数据,类似硬格机android.permission.MODIFY_AUDIO_SETTINGS允许程序修改全局音频设置(Allows an application to modify global audio settings) android.permission.MODIFY_PHONE_STATE允许修改话机状态,如电源,人机接口等(Allows modification of the telephony state – power on, mmi, etc. )android.permission.MOUNT_UNMOUNT_FILESYSTEMS允许挂载和反挂载文件系统可移动存储(Allows mounting and unmounting file systems for removable storage. )android.permission.PERSISTENT_ACTIVITY允许一个程序设置他的activities显示(Allow an application to make its activities persistent. )android.permission.PROCESS_OUTGOING_CALLS允许程序监视、修改有关播出电话(Allows an application to monitor, modify, or abort outgoing calls)android.permission.READ_CALENDAR允许程序读取用户日历数据(Allows an application to read the user’s calendar data.) android.permission.READ_CONTACTS允许程序读取用户联系人数据(Allows an application to read the user’s contacts data.) android.permission.READ_FRAME_BUFFER允许程序屏幕波或和更多常规的访问帧缓冲数据(Allows an application to take screen shots and more generally get access to the frame buffer data)android.permission.READ_INPUT_STATE允许程序返回当前按键状态(Allows an application to retrieve the current state of keys and switches. )android.permission.READ_LOGS允许程序读取底层系统日志文件(Allows an application to read the low-level system log files. )android.permission.READ_OWNER_DATA允许程序读取所有者数据(Allows an application to read the owner’s data)android.permission.READ_SMS允许程序读取短信息(Allows an application to read SMS messages.)android.permission.READ_SYNC_SETTINGS允许程序读取同步设置(Allows applications to read the sync settings)android.permission.READ_SYNC_STATS允许程序读取同步状态(Allows applications to read the sync stats)android.permission.REBOOT请求能够重新启动设备(Required to be able to reboot the device. )android.permission.RECEIVE_BOOT_COMPLETED允许一个程序接收到ACTION_BOOT_COMPLETED广播在系统完成启动(Allows an application to receive the ACTION_BOOT_COMPLETED that is broadcast after the system finishes booting. )android.permission.RECEIVE_MMS允许一个程序监控将收到MMS彩信,记录或处理(Allows an application to monitor incoming MMS messages, to record or perform processing on them. )android.permission.RECEIVE_SMS允许程序监控一个将收到短信息,记录或处理(Allows an application to monitor incoming SMS messages, to record or perform processing on them.)android.permission.RECEIVE_WAP_PUSH允许程序监控将收到WAP PUSH信息(Allows an application to monitor incoming WAP push messages. )android.permission.RECORD_AUDIO允许程序录制音频(Allows an application to record audio)android.permission.REORDER_TASKS允许程序改变Z轴排列任务(Allows an application to change the Z-order of tasks) android.permission.RESTART_PACKAGES允许程序重新启动其他程序(Allows an application to restart other applications)android.permission.SEND_SMS允许程序发送SMS短信(Allows an application to send SMS messages)android.permission.SET_ACTIVITY_WATCHER允许程序监控或控制activities已经启动全局系统中Allows an application to watch and control how activities are started globally in the system.android.permission.SET_ALWAYS_FINISH允许程序控制是否活动间接完成在处于后台时Allows an application to control whether activities are immediately finished when put in the background.android.permission.SET_ANIMATION_SCALE修改全局信息比例(Modify the global animation scaling factor.)android.permission.SET_DEBUG_APP配置一个程序用于调试(Configure an application for debugging.)android.permission.SET_ORIENTATION允许底层访问设置屏幕方向和实际旋转(Allows low-level access to setting the orientation (actually rotation) of the screen.)android.permission.SET_PREFERRED_APPLICATIONS允许一个程序修改列表参数PackageManager.addPackageToPreferred() 和PackageManager.removePackageFromPreferred()方法(Allows an application to modify the list of preferred applications with the PackageManager.addPackageToPreferred() and PackageManager.removePackageFromPreferred() methods.)android.permission.SET_PROCESS_FOREGROUND允许程序当前运行程序强行到前台(Allows an application to force any currently running process to be in the foreground.)android.permission.SET_PROCESS_LIMIT允许设置最大的运行进程数量(Allows an application to set the maximum number of (not needed) application processes that can be running. )android.permission.SET_TIME_ZONE允许程序设置时间区域(Allows applications to set the system time zone)android.permission.SET_WALLPAPER允许程序设置壁纸(Allows applications to set the wallpaper )android.permission.SET_WALLPAPER_HINTS允许程序设置壁纸hits(Allows applications to set the wallpaper hints)android.permission.SIGNAL_PERSISTENT_PROCESSES允许程序请求发送信号到所有显示的进程中(Allow an application to request that a signal be sent to all persistent processes)android.permission.STATUS_BAR允许程序打开、关闭或禁用状态栏及图标Allows an application to open, close, or disable the status bar and its icons.android.permission.SUBSCRIBED_FEEDS_READ允许一个程序访问订阅RSS Feed内容提供(Allows an application to allow access the subscribed feeds ContentProvider. )android.permission.SUBSCRIBED_FEEDS_WRITE系统暂时保留改设置,android开发网认为未来版本会加入该功能。
AndroidToast自定义显示时间
AndroidToast⾃定义显⽰时间Toast是Android中使⽤频率较⾼的弹窗提⽰⼿段,使⽤起来简单、⽅便。
常规使⽤⽅法这⾥不做说明,继前⼀篇博客,其中抛砖引⽟的给出⼀个简单的实现Toast全屏显⽰的⽅法后,发现⽆法控制Toast的显⽰时长。
虽然Toast中有setDuration(int duration)接⼝,但是跟踪代码发现,设置的时间没起作⽤,只有系统默认的两个时间LENGTH_DURATION = 3500毫秒,SHORT_DURATION = 2000毫秒。
也就是说,⽆论我们设置多长时间,最终影响Toast弹窗时间的只有Toast.LENGTH_LONG和Toast.LENGTH_SHORT两个参数。
⽬前解决该问题的⽅法主要有两个:1、利⽤反射原理,通过控制Toast的show()和hide()接⼝来控制显⽰时间,可参见博客。
不过该⽅法只对Android4.0以下的系统有效,通过模拟器实测,也是如此。
当前系统基本都在Android4.0以上,该⽅法过于⽼旧。
2、利⽤WindowManager的addView()⽅法动态刷屏,可看见博客。
该⽅法被很多软件⽤来显⽰浮动窗⼝和图⽚的动态悬浮效果,如360⼿机软件和⼀些⼿游软件。
在Android4.0上是⼀种不错的选择。
当然,对于遇到系统默认把悬浮窗⼝功能关闭的⼿机,这招可能就不灵了。
通过分析Toast的显⽰原理和弹窗控制逻辑,本⼈借助Handler和Runnable机制,也成功实现了对Toast显⽰任意⾃定义时长。
代码是在Toast全屏显⽰的基础上修改⽽来,贴出如下:package com.dls.nltest;import android.content.Context;import android.os.Handler;import android.util.DisplayMetrics;import android.util.Log;import android.view.Gravity;import android.view.WindowManager;import android.widget.LinearLayout;import android.widget.TextView;import android.widget.Toast;import youtParams;public class GenericToast{private static final String TAG = "GenericToast";private static final int TOAST_TEXTSIZE = 20;/** {@link Toast#LENGTH_SHORT} default time is 3500ms */private static final int LENGTH_SHORT_TIME = 2000;private static Context mContext = null;private static Toast mToast = null;private static TextView mTextView = null;private static int mDuration = 0;private static CharSequence mText = null;private Handler mHandler = new Handler();private GenericToast(Context context) {mContext = context;}public static GenericToast makeText(Context context, CharSequence text, int duration){GenericToast instance = new GenericToast(context);mContext = context;mDuration = duration;mText = text;return instance;}private static void getToast(Context context, CharSequence text){mToast = Toast.makeText(context, null, Toast.LENGTH_LONG);mToast.setGravity(Gravity.CENTER, 0, 0);LinearLayout toastView = (LinearLayout)mToast.getView();// Get the screen size with unit pixels.WindowManager wm = (WindowManager)context.getSystemService(Context.WINDOW_SERVICE);DisplayMetrics outMetrics = new DisplayMetrics();wm.getDefaultDisplay().getMetrics(outMetrics);mTextView = new TextView(context);LayoutParams vlp = new LayoutParams(outMetrics.widthPixels,outMetrics.heightPixels);vlp.setMargins(0, 0, 0, 0);mTextView.setLayoutParams(vlp);mTextView.setTextSize(TOAST_TEXTSIZE);mTextView.setText(text);mTextView.setGravity(Gravity.CENTER);toastView.addView(mTextView);}/*** Before call this method, you should call {@link makeText}.** @return Toast display duration.*/public int getDuration(){return mDuration;}public void show(){Log.d(TAG, "Show custom toast");mHandler.post(showRunnable);}public void hide(){Log.d(TAG, "Hide custom toast");mDuration = 0;if(mToast != null){mToast.cancel();}}private Runnable showRunnable = new Runnable(){@Overridepublic void run() {if(mToast != null){mTextView.setText(mText);}else{getToast(mContext, mText);}if(mDuration != 0){mToast.show();}else{Log.d(TAG, "Hide custom toast in runnable");hide();return;}if(mDuration > LENGTH_SHORT_TIME){mHandler.postDelayed(showRunnable, LENGTH_SHORT_TIME);mDuration -= LENGTH_SHORT_TIME;}else{mHandler.postDelayed(showRunnable, mDuration);mDuration = 0;}}};}Toast弹窗10s,测试代码如下:GenericToast mGToast = GenericToast.makeText(this, "I am generic toast", 10 * 1000); mGToast.show();如果需要终⽌弹窗,只要在需要的地⽅调⽤hide()即可。
Androidstudio将字符串写入本地的操作方法
Androidstudio将字符串写⼊本地的操作⽅法File 类的操作:1.⾸先需要添加相关权限:<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/><uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>注意6.0以上需要动态申请:private void checkPermission(){if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {//6.0以上int permission = ActivityCompat.checkSelfPermission(getApplication(), Manifest.permission.RECEIVE_SMS);int permission1 = ActivityCompat.checkSelfPermission(getApplication(), Manifest.permission.WRITE_EXTERNAL_STORAGE);if(permission != PackageManager.PERMISSION_GRANTED && permission1 != PackageManager.PERMISSION_GRANTED) {Log.e(TAG,"没有获取权限,请申请");// 申请⼀个(或多个)权限,并提供⽤于回调返回的获取码(⽤户定义)if (ActivityCompat.shouldShowRequestPermissionRationale(this,Manifest.permission.RECEIVE_SMS) && ActivityCompat.shouldShowRequestPermissionRationale(this,Manifest.permission.WRITE_EXTERNAL_STORAGE)) {//这⾥可以写个对话框之类的项向⽤户解释为什么要申请权限,并在对话框的确认键后续再次申请权限 Log.e(TAG,"提⽰");ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.RECEIVE_SMS,Manifest.permission.WRITE_EXTERNAL_STORAGE}, CODE_READ_SMS);} else {//申请权限,字符串数组内是⼀个或多个要申请的权限,1是申请权限结果的返回参数,在onRequestPermissionsResult可以得知申请结果Log.e(TAG,"您已禁⽌");Toast.makeText(MainActivity.this,"没有获取读取⼿机权限,请到应⽤中⼼⼿动打开该权限",Toast.LENGTH_SHORT).show();}}else{Log.e(TAG,"获取到了权限");}}else{Log.e(TAG,"获取到了权限");}}@Overridepublic void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {super.onRequestPermissionsResult(requestCode, permissions, grantResults);if(requestCode == CODE_READ_SMS){if(grantResults[0] == PackageManager.PERMISSION_GRANTED) {Log.e(TAG,"获取到了权限");} else{// 没有获取到权限,做特殊处理Log.e(TAG,"没有获取到权限");Toast.makeText(MainActivity.this,"没有获取读取⼿机权限,请到应⽤中⼼⼿动打开该权限",Toast.LENGTH_SHORT).show();}}}2.saveToFilea)BufferedWriter 追加//保存⽂件到sd卡public void saveToFile(String content) {BufferedWriter out = null;//获取SD卡状态String state = Environment.getExternalStorageState();//判断SD卡是否就绪if (!state.equals(Environment.MEDIA_MOUNTED)) {Toast.makeText(this, "请检查SD卡", Toast.LENGTH_SHORT).show();return;}//取得SD卡根⽬录File file = Environment.getExternalStorageDirectory();try {Log.e(TAG, "======SD卡根⽬录:" + file.getCanonicalPath());if(file.exists()){LOG.e(TAG, "file.getCanonicalPath() == " + file.getCanonicalPath());}/*输出流的构造参数1:可以是File对象也可以是⽂件路径输出流的构造参数2:默认为False=>覆盖内容; true=>追加内容*/out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file.getCanonicalPath() + "/readMsg.txt",true)));out.newLine();out.write(content);Toast.makeText(this, "保存成功", Toast.LENGTH_SHORT).show();} catch (IOException e) {e.printStackTrace();} finally {if (out != null) {try {out.close();} catch (IOException e) {e.printStackTrace();}}}}b)FileWriter追加/*** 使⽤FileWriter进⾏⽂本内容的追加* @param file* @param content*/private void addTxtToFileWrite(File file, String content){FileWriter writer = null;try {//FileWriter(file, true),第⼆个参数为true是追加内容,false是覆盖writer = new FileWriter(file, true);writer.write("\r\n");//换⾏writer.write(content);} catch (IOException e) {e.printStackTrace();} finally {try {if(writer != null){writer.close();}} catch (IOException e) {e.printStackTrace();}}}}3.readFromFile()//从SD卡读取⽂件public String readFromFile() {//读的时候要⽤字符流万⼀⾥⾯有中⽂BufferedReader reader = null;FileInputStream fis;StringBuilder sbd = new StringBuilder();String state = Environment.getExternalStorageState();if (!state.equals(Environment.MEDIA_MOUNTED)) {Toast.makeText(this, "SD卡未就绪", Toast.LENGTH_SHORT).show(); return "";}File root = Environment.getExternalStorageDirectory();try {fis = new FileInputStream(root + "/readMsg.txt");reader = new BufferedReader(new InputStreamReader(fis));String row;while ((row = reader.readLine()) != null) {sbd.append(row);}} catch (FileNotFoundException e) {Toast.makeText(this, "⽂件不存在", Toast.LENGTH_SHORT).show(); //e.printStackTrace();} catch (IOException e) {e.printStackTrace();} finally {if (reader != null) {try {reader.close();} catch (IOException e) {e.printStackTrace();}}}return sbd.toString();}4.removeFromFile()//删除SD卡⽂件public void removeFromFile() {String state = Environment.getExternalStorageState();if (!state.equals(Environment.MEDIA_MOUNTED)) {Toast.makeText(this, "SD卡未就绪", Toast.LENGTH_SHORT).show();return;}//取得SD卡根⽬录File root = Environment.getExternalStorageDirectory();File myFile=new File(root+"/sd.txt");//File myFile=new File(root,"sd.txt");if (myFile.exists()) {myFile.delete();Toast.makeText(this,"⽂件已删除",Toast.LENGTH_SHORT).show();}else {Toast.makeText(this,"⽂件不存在",Toast.LENGTH_SHORT).show();}}}总结以上所述是⼩编给⼤家介绍的Android studio 将字符串写⼊本地的操作⽅法,希望对⼤家有所帮助,如果⼤家有任何疑问请给我留⾔,⼩编会及时回复⼤家的。
android自定义Toast设定显示时间
android⾃定义Toast设定显⽰时间开发android的同学可能会抱怨Toast设定显⽰的时长⽆效,只能是Toast.LENGTH_LONG 或者Toast.LENGTH_SHORT 之⼀,为了解决这些办法,有多种实现⽅式:1.使⽤定时器,定时调⽤show()⽅法.2.使⽤CountDownTimer类,也是调⽤show()⽅法.3.使⽤WindownManager类实现.本⽂使⽤⽅法三进⾏实现,难度不⼤,直接看代码吧.package com.open.toast;import android.content.Context;import android.graphics.Color;import android.graphics.PixelFormat;import android.os.Handler;import android.view.Gravity;import android.view.View;import android.view.WindowManager;import android.widget.LinearLayout;import android.widget.TextView;/*** ⾃定义时长的Toast* @author DexYang**/public class CToast {public static CToast makeText(Context context, CharSequence text, int duration){CToast result = new CToast(context);LinearLayout mLayout=new LinearLayout(context);TextView tv = new TextView(context);tv.setText(text);tv.setTextColor(Color.WHITE);tv.setGravity(Gravity.CENTER);mLayout.setBackgroundResource(R.drawable.widget_toast_bg);int w=context.getResources().getDisplayMetrics().widthPixels / 2;int h=context.getResources().getDisplayMetrics().widthPixels / 10;mLayout.addView(tv, w, h);result.mNextView = mLayout;result.mDuration = duration;return result;}public static final int LENGTH_SHORT = 2000;public static final int LENGTH_LONG = 3500;private final Handler mHandler = new Handler();private int mDuration=LENGTH_SHORT;private int mGravity = Gravity.CENTER;private int mX, mY;private float mHorizontalMargin;private float mVerticalMargin;private View mView;private View mNextView;private WindowManager mWM;private final youtParams mParams = new youtParams();public CToast(Context context) {init(context);}/*** Set the view to show.* @see #getView*/public void setView(View view) {mNextView = view;}/*** Return the view.* @see #setView*/public View getView() {return mNextView;}/*** Set how long to show the view for.* @see #LENGTH_SHORT* @see #LENGTH_LONG*/public void setDuration(int duration) {mDuration = duration;}/*** Return the duration.* @see #setDuration*/public int getDuration() {return mDuration;}/*** Set the margins of the view.** @param horizontalMargin The horizontal margin, in percentage of the * container width, between the container's edges and the* notification* @param verticalMargin The vertical margin, in percentage of the* container height, between the container's edges and the* notification*/public void setMargin(float horizontalMargin, float verticalMargin) {mHorizontalMargin = horizontalMargin;mVerticalMargin = verticalMargin;}/*** Return the horizontal margin.*/public float getHorizontalMargin() {return mHorizontalMargin;}/*** Return the vertical margin.*/public float getVerticalMargin() {return mVerticalMargin;}/*** Set the location at which the notification should appear on the screen. * @see android.view.Gravity* @see #getGravity*/public void setGravity(int gravity, int xOffset, int yOffset) {mGravity = gravity;mX = xOffset;mY = yOffset;}/*** Get the location at which the notification should appear on the screen. * @see android.view.Gravity* @see #getGravity*/public int getGravity() {return mGravity;}/*** Return the X offset in pixels to apply to the gravity's location.*/public int getXOffset() {return mX;}/*** Return the Y offset in pixels to apply to the gravity's location.*/public int getYOffset() {return mY;}/*** schedule handleShow into the right thread*/public void show() {mHandler.post(mShow);if(mDuration>0){mHandler.postDelayed(mHide, mDuration);}}/*** schedule handleHide into the right thread*/public void hide() {mHandler.post(mHide);}private final Runnable mShow = new Runnable() {public void run() {handleShow();}};private final Runnable mHide = new Runnable() {public void run() {handleHide();}};private void init(Context context){final youtParams params = mParams;params.height = youtParams.WRAP_CONTENT;params.width = youtParams.WRAP_CONTENT;params.flags = youtParams.FLAG_NOT_FOCUSABLE | youtParams.FLAG_NOT_TOUCHABLE| youtParams.FLAG_KEEP_SCREEN_ON;params.format = PixelFormat.TRANSLUCENT;params.windowAnimations = android.R.style.Animation_Toast;params.type = youtParams.TYPE_TOAST;params.setTitle("Toast");mWM = (WindowManager) context.getApplicationContext().getSystemService(Context.WINDOW_SERVICE);}private void handleShow() {if (mView != mNextView) {// remove the old view if necessaryhandleHide();mView = mNextView;// mWM = WindowManagerImpl.getDefault();final int gravity = mGravity;mParams.gravity = gravity;if ((gravity & Gravity.HORIZONTAL_GRAVITY_MASK) == Gravity.FILL_HORIZONTAL){mParams.horizontalWeight = 1.0f;}if ((gravity & Gravity.VERTICAL_GRAVITY_MASK) == Gravity.FILL_VERTICAL){mParams.verticalWeight = 1.0f;}mParams.x = mX;mParams.y = mY;mParams.verticalMargin = mVerticalMargin;mParams.horizontalMargin = mHorizontalMargin;if (mView.getParent() != null){mWM.removeView(mView);}mWM.addView(mView, mParams);}}private void handleHide(){if (mView != null){if (mView.getParent() != null){mWM.removeView(mView);}mView = null;}}}测试类的代码如下:package com.open.toast;import android.app.Activity;import android.os.Bundle;import android.text.TextUtils;import android.view.View;import android.widget.EditText;public class MainActivity extends Activity {private EditText mEditText;private CToast mCToast;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(yout.activity_main);init();}private void init(){mEditText=(EditText)findViewById(R.id.timeEditText);findViewById(R.id.showToastBtn).setOnClickListener(listener);findViewById(R.id.hideToastBtn).setOnClickListener(listener);}private View.OnClickListener listener=new View.OnClickListener() {@Overridepublic void onClick(View v) {switch(v.getId()){case R.id.showToastBtn:if(null!=mCToast){mCToast.hide();}int time=TextUtils.isEmpty(mEditText.getText().toString())?CToast.LENGTH_SHORT:Integer.valueOf(mEditText.getText().toString());mCToast=CToast.makeText(getApplicationContext(), "我来⾃CToast!",time);mCToast.show();break;case R.id.hideToastBtn:if(null!=mCToast){mCToast.hide();}break;}}};}效果如下:源码下载:以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。
androidwebp编解码详解
androidwebp编解码详解
key words:android decode webp sample
当我敲下键盘的时候有种深深的耻辱感,看到android 4.0⽀持webp格式的图像,于是我狠命的找提供了什么样的api,nnd,硬是没找到,后来抱着试试的⼼态,⽤BitmapFactory来读⼀下,结果没啥问题。
得出⼀个结论,作为⼀名码农,要敢想敢尝试敢做!
webp解码
跟你解码jpg没啥区别,图⽚放到drawable或者别的地⽅然后
Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.raw.webp); imv.setImageBitmap(bmp);
这么⼀搞,就放到ImageView上⾯了。
当然这种⽅式只在4.0上⾯可⾏。
如果你想兼容⽼版本(4.0以下的android 设备),那么你需要⽤jni的⽅式。
这⾥给出了stackoverflow上⾯提供的⽅法,需要的可以试试,⽤jni封装下,也没多⿇烦。
这⾥就不弄了,给个链接,需要的可以弄下。
webp编码:
编码跟你bitmap编码没啥区别,ics的pressFormat这个枚举⾥有了webp了,所以⽀持编码成这种格式。
have fun,good luck!
以上就对Android webp 编解码的资料整理,后续继续补充相关资料,谢谢⼤家对本站的⽀持!。
fragment中使用toast.maketext
在Android开发中,Toast.makeText()方法通常用于在屏幕上显示一条短暂的消息。
当你在Fragment中使用Toast.makeText()时,你需要确保你有一个有效的Context来创建Toast对象。
下面是一个在Fragment中使用Toast.makeText()的示例:java复制代码public class MyFragment extends Fragment {@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {View view = inflater.inflate(yout.fragment_layout, container, false);// 假设你有一个按钮,并且当点击它时,你想要显示一个Toast消息Button button = view.findViewById(R.id.my_button);button.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {// 使用getActivity()作为Context来创建Toast对象Toast.makeText(getActivity(), "这是一个Toast消息", Toast.LENGTH_SHORT).show();}});return view;}}在上面的示例中,我们在Fragment的onCreateView()方法中设置了一个按钮的点击监听器。
当按钮被点击时,我们使用getActivity()方法获取Fragment所在的Activity作为Context,并使用Toast.makeText()方法创建一个Toast对象来显示一条消息。
toast语句
Toast语句是一种常见的编程语言语法,用于在控制台或终端输出简短的文本信息。
它通常用于调试、日志记录或向用户显示简短的反馈消息。
Toast语句的特点是简洁、易用和灵活性高。
它可以输出不同类型的数据,如字符串、数字、布尔值等,而且可以根据需要进行格式化。
在Java中,Toast语句通常使用System.out.println()方法实现,例如:
这将在控制台输出一条简单的文本消息:"Hello, world!"。
除了Java,其他编程语言也有类似的Toast语句语法。
例如,Python中的print()函数也可以用来输出简短的文本信息。
使用Toast语句可以帮助程序员在开发过程中更好地跟踪程序的状态和行为,及时发现和解决问题。
同时,它也可以用于向用户提供简短的反馈消息,例如程序运行的状态或结果。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
类结构public class Toast extends Objectng.Objectandroid.widget.Toast概述Toast是一种提供给用户简洁信息的视图。
Toast类帮助你创建和显示该信息。
该视图已浮于应用程序之上的形式呈现给用户。
因为它并不获得焦点,即使用户正在输入什么也不会受到影响。
它的目标是尽可能已不显眼的方式,使用户看到你提供的信息。
有两个例子就是音量控制和设置信息保存成功。
使用该类最简单的方法就是调用一个静态方法,让他来构造你需要的一切并返回一个新的 Toast 对象。
常量int LENGTH_LONG持续显示视图或文本提示较长时间。
该时间长度可定制。
参见setDuration(int)int LENGTH_SHORT持续显示视图或文本提示较短时间。
该时间长度可定制。
该值为默认值。
参见setDuration(int)构造函数public Toast (Context context)构造一个空的 Toast 对象。
在调用 show() 之前,必须先调用setView(View)。
(译者注:只有使用setView(View)的时候,才使用new Toast(Content content)来得到Toast对象,否则必须用makeText()方法来创建toast对象,并且这种方式获得Toast对象不能使用setText()方法。
)参数context 使用的上下文。
通常是你的 Application 或 Activity 对象。
公共方法publicint cancel ()如果视图已经显示则将其关闭,还没有显示则不再显示。
一般不需要调用该方法。
正常情况下,视图会在超过存续期间后消失。
publicint getDuration()返回存续期间请参阅setDuration(int)publicint getGravity()取得提示信息在屏幕上显示的位置。
请参阅GravitysetGravity()public float getHorizontalMargin()返回横向栏外空白。
public float getVerticalMargin()请参阅Toast msg = Toast.makeText(Main.this, "Message", Toast.LENGTH_LONG); msg.setGravity(Gravity.CENTER, msg.getXOffset() / 2, msg.getYOffset() / 2);msg.show();publicint getYOffset()返回相对于参照位置的纵向偏移像素量。
参数context 使用的上下文。
通常是你的Application或Activity对象。
resId要使用的字符串资源ID,可以是已格式化文本。
duration 该信息的存续期间。
值为LENGTH_SHORT或LENGTH_LONG异常参数context使用的上下文。
通常是你的Application或Activity对象。
resId要显示的文本,可以是已格式化文本。
duration该信息的存续期间。
值为LENGTH_SHORT或LENGTH_LONGpublic void setDuration(int duration)设置存续期间。
请参阅LENGTH_SHORT(译者注:自定义Toast的显示位置,例如toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0)可以把Toast定位在左上角。
Toast提示的位置xOffset:大于0向右移,小于0向左移请参阅Gravity参数horizontalMargin容器的边缘与提示信息的横向空白(与容器宽度的比)。
verticalMargin容器的边缘与提示信息的纵向空白(与容器高度的比)。
public void setText(intresId)更新之前通过makeText() 方法生成的Toast 对象的文本内容。
参数参数(译者注:注意这个方法可以显示自定义的toast视图,可以包含图像,文字等等。
是比较常用的方法。
)请参阅按照指定的存续期间显示提示信息。
补充文章链接让Toast一直显示的解决方法通知 Toast详细用法(显示view)Android一种信息提示机制:Toast[推荐]android Toast大全(五种情形)建立属于你自己的Toast示例代码示例一:使用图片的ToastToast toast = new Toast(this);ImageView view = new ImageView(this);view.setImageResource(R.drawable.icon);toast.setView(view);toast.show();示例二:带文字带图片Toastprivate void showToast() {// 1 创建ToastToast toast = Toast.makeText(this, "图文显示", Toast.LENGTH_LONG);// 2 创建Layout,并设置为水平布局LinearLayoutmLayout = new LinearLayout(this);mLayout.setOrientation(LinearLayout.HORIZONTAL); ImageViewmImage = new ImageView(this); // 用于显示图像的ImageViewmImage.setImageResource(R.drawable.icon);View toastView = toast.getView(); // 获取显示文字的Toast View mLayout.addView(mImage); // 添加到LayoutmLayout.addView(toastView);// 3 关键,设置Toast显示的View(上面生成的Layout). toast.setView(mLayout);toast.show();}示例三:综合Toast例子Main.xml<?xml version="1.0"encoding="utf-8"?><LinearLayout xmlns:android="/apk/res/android"android:orientation="vertical"android:layout_width="fill_parent"android:layout_height="fill_parent"><Button android:id="@+id/button1"android:layout_width="fill_parent"android:layout_height="wrap_content"android:text="Toast显示View"/><Button android:id="@+id/button2"android:layout_width="fill_parent"android:layout_height="wrap_content"android:text="Toast直接输出"/><Button android:id="@+id/button3"android:layout_width="fill_parent"android:layout_height="wrap_content"android:text="VolumeToast应用"/></LinearLayout>Toast.xml<?xml version="1.0"encoding="utf-8"?><LinearLayout xmlns:android="/apk /res/android"android:orientation="vertical"android:layout_width="fill_parent"android:layout_height="fill_parent"><ImageView android:src="@drawable/toast"android:layout_width="wrap_content"android:layout_height="wrap_content"/><TextView android:id="@+id/tv1"android:text=""android:layout_width="wrap_content"android:layout_height="wrap_content"/></LinearLayout>Volumetoast.xml<?xml version="1.0"encoding="utf-8"?><LinearLayoutxmlns:android="/apk/res/android"android:layout_width="280dp"android:layout_height="wrap_content"android:gravity="center_horizontal"android:orientation="vertical"><TextViewandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:text="Volume"/><ProgressBarandroid:id="@+id/progress"android:layout_width="280dp"android:layout_height="wrap_content"android:progress="50"android:max="100"style="?android:attr/progressBarStyleHorizontal"/></LinearLayout>Java代码文件public class toasttest extends Activity {/** Called when the activity is first created. */@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(yout.main);Button button1=(Button)findViewById(R.id.button1); button1.setOnClickListener(bt1lis);Button button2=(Button)findViewById(R.id.button2); button2.setOnClickListener(bt2lis);Button button3=(Button)findViewById(R.id.button3); button3.setOnClickListener(bt3lis);}OnClickListener bt1lis=new OnClickListener(){@Overridepublic void onClick(View v) {showToast();}};OnClickListener bt2lis=new OnClickListener(){@Overridepublic void onClick(View v) {Toast.makeText(toasttest.this,"直接输出测试", Toast.LENGTH_LONG).show();}};OnClickListener bt3lis=new OnClickListener(){@Overridepublic void onClick(View v) { showvolumeToast();}};public void showToast(){LayoutInflaterli=(LayoutInflater)getSystemService(YOUT_INFLATER_S ERVICE);View view=li.inflate(yout.toast,null);//把布局文件toast.xml转换成一个viewToast toast=new Toast(this);toast.setView(view);//载入view,即显示toast.xml的内容TextViewtv=(TextView)view.findViewById(1);tv.setText("Toast显示View内容");//修改TextView里的内容toast.setDuration(Toast.LENGTH_SHORT);//设置显示时间,长时间Toast.LENGTH_LONG,短时间为Toast.LENGTH_SHORT,不可以自己编辑toast.show();}public void showvolumeToast() {// TODO Auto-generated method stubLayoutInflaterli=(LayoutInflater)getSystemService(YOUT_INFLATER_S ERVICE);View volumeView=li.inflate(yout.volumetoast,null); ((ProgressBar)volumeView.findViewById(R.id.progress)).setProgress((( ProgressBar)volumeView.findViewById(R.id.progress)).getProgress() + 10);//这里还有点问题,就是progress的进度条不动,因为我们主要是想给大家展示//Toast的用法,这里就不深究了Toast volumeToast= new Toast(this); volumeToast.setGravity(Gravity.BOTTOM, 0, 100); volumeToast.setView(volumeView); volumeToast.setDuration(Toast.LENGTH_SHORT); volumeToast.show();}}。