安卓toast(安卓如何在toast输出三角形面积)
本文目录
- 安卓如何在toast输出三角形面积
- android的toast怎么自定义显示时间长度
- Android开发_弹出小小提示框_Toast
- 安卓的toast 在ios里叫什么意思
- 如何防止android Toast重复显示
- android里Toast是什么意思
安卓如何在toast输出三角形面积
下载JAVA可以实现。1、编写一个坐标系中的“点”类Point:编写构造器用x、y坐标初始化某个点publicPoint(doublex,doubley)。2、重载构造器初始化对角线上的点,publicPoint计算并输出显示该Triangle对象的周长和面积。
android的toast怎么自定义显示时间长度
Android中Toast的显示时间为特定时间且不可更改,但是有时候我们开发设计需要让Toast显示更长时间,或者自己完全控制Toast的显示和关闭。通过查看Toast类的源码,可以看出,这有点难为它了,Toast类本身并没有提供相应方法。 但是通过源码的查看,还是可以看出点眉头。源码分析思路在这里转eoe里的一篇文章,思路较为清晰: 转: Toast信息提示框之所以在显示一定时间后会自动关闭,是因为在系统中有一个Toast队列。系统会依次从队列中取(出队列)一个Toast,并 显示它。在显示一段时间后,再关闭,然后再显示下一个Toast信息提示框。 直到Toast队列中所有Toast都显示完为止。那么有些时候需要这个Toas t信息提示框长时间显示,直到需要关闭它时通过代码来控制,而不是让系统自动来关闭Toast信息提示框。 不过这个要求对于Toast本身来说有些过 分,因为Toast类并没有提供这个功能。虽然如此,但方法总比问题多。通过一些特殊的处理还是可以实现这个功能的,而且并不复杂。 Toast信息提示框需要调用Toast.show方法来显示。下面来看一下show方法的源代码。 public void show() { if (mNextView == null) { throw new RuntimeException("setView must have been called"); } INotificationManager service = getService(); String pkg = mContext.getPackageName(); TN tn = mTN; try { // 将当前Toast加入到Toast队列 service.enqueueToast(pkg, tn, mDuration); } catch (RemoteException e) { // Empty } }复制代码 show方法的代码并不复杂,可以很容易找到如下的代码。 service.enqueueToast(pkg, tn, mDuration);复制代码 从上面的代码可以很容易推断出它的功能是将当前的Toast加入到系统的Toast队列中。 看到这里,各位读者应该想到。虽然show方法的表面功能是显示Toast信息提示框,但其实际的功能是将Toast加入到队列中,再由系统根据Toast队列来显示Toast信息提示框。那么我们经过更进一步地思考,可以大胆地做出一个初步的方案。 既然系统的Toast队列可以显示Toast信息提示框,那么我们为什么不可以自己来显示它呢? 这样不是可以自己来控制Toast的信息提示框的显示和关闭了吗!当然,这就不能再调用show方法来显示Toast信息提示框了(因为show方法会将Toast加入队列,这样我们就控制不了Toast了)。 既然初步方案已拟定,现在就来实施它。先在Toast类找一下还有没有其他的show方法。 结果发现了一个TN类,该类是Toast的一个内嵌类。在TN类中有一个show方法。TN是ITransientNotification.Stub的子类。从ITransientNotification和TN类中的show方法初步推断(因为Transient的中文意思是“短暂的”)系统是从Toast队列中获得了Toast对象后,利用TN对象的show方法显示Toast,再利用TN.hide方法来关闭Toast。 首先声明,这只是假设,我们还不知道这么做是否可行!当然,这也是科学研究的一般方法,先推断或假设,然后再证明推断或假设。 现在关键的一步是获得TN对象。遗憾的是TN被声明成private类型,外部无法访问。不过别着急。在Toast类中有一个mTN变量。虽然不是public变量,但仍然可以通过反射技术访问该变量。mTN变量会在创建Toast对象时初始化。 因此,只要获得mTN变量,就获得了TN对象。下面的代码显示了一个永远不会自动关闭的Toast信息提示框。 // 先创建一个Toast对象 Toast toast = Toast.makeText(this, "永不消失的Toast", Toast.LENGTH_SHORT); // 设置Toast信息提示框显示的位置(在屏幕顶部水平居中显示) toast.setGravity(Gravity.TOP | Gravity.CENTER_HORIZONTAL, 0, 0); try { // 从Toast对象中获得mTN变量 Field field = toast.getClass().getDeclaredField("mTN"); field.setAccessible(true); Object obj = field.get(toast); // TN对象中获得了show方法 Method method = obj.getClass().getDeclaredMethod("show", null); // 调用show方法来显示Toast信息提示框 method.invoke(obj, null); } catch (Exception e) { }复制代码 上面的代码中try{…}catch(…){…}语句中的代码是关键。先利用事先创建好的Toast对象获得了mTN变量。然后再利用反射技术获得了TN对象的show方法。 关闭Toast和显示Toast的方法类似,只是需要获得hide方法,代码如下: try { // 需要将前面代码中的obj变量变成类变量。这样在多个地方就都可以访问了 Method method = obj.getClass().getDeclaredMethod("hide", null); method.invoke(obj, null); } catch (Exception e) { }复制代码 上面的代码已经很完美地实现了通过代码控制Toast信息提示框显示和关闭的功能。但如果想实现得更完美,可以在Android SDK源代码中找一个叫ITransientNotification.aidl的文件(该文件是AIDL服务定义文件,将在后面详细介绍),并在Android工程的src目录中建一个android.app包,将这个文件放到这个包中。 然后ADT会自动在gen目录中生成了一个android.app包,包中有一个ITransientNotification.java文件。由于Android SDK自带的ItransientNotification接口属于内部资源,外部程序无法访问,因此,只能将从Toast对象中获得的mTN变量转换成刚才生成的ITransientNotification对象了。 这样就不需要使反射技术获得show和hide方法了。 经过改良的显示和关闭Toast信息提示框的代码如下: ITransientNotification notification = (ITransientNotification) field.get(toast); // 显示Toast信息提示框 notification.show(); // 关闭Toast信息提示框 notification.hide();复制代码 最后整理代码如下: Java代码 import java.lang.reflect.Field; import java.lang.reflect.Method; import android.app.Activity; import android.os.Bundle; import android.view.Gravity; import android.view.View; import android.widget.Button; import android.widget.Toast; public class TestToastActivity extends Activity { private Button showtoast,closetoast; private Toast toast; private Field field; private Object obj; private Method showMethod,hideMethod; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); //初始化按钮组件 showtoast = (Button)this.findViewById(R.id.showtoast); closetoast = (Button)this.findViewById(R.id.closetoast); //设置组件监听 showtoast.setOnClickListener(new MyOnClickListener()); closetoast.setOnClickListener(new MyOnClickListener()); //创建Toast对象 toast = Toast.makeText(this, "Toast自定义显示时间测试", 1); toast.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL, 0, 0); //利用反射技术拿到mTN对象 reflectionTN(); } class MyOnClickListener implements View.OnClickListener{ @Override public void onClick(View v) { switch (v.getId()) { case R.id.showtoast: try { showMethod.invoke(obj, null);//调用TN对象的show()方法,显示toast } catch (Exception e) { e.printStackTrace(); } break; case R.id.closetoast: try { hideMethod.invoke(obj, null);//调用TN对象的hide()方法,关闭toast } catch (Exception e) { e.printStackTrace(); } break; default: break; } } } private void reflectionTN() { try { field = toast.getClass().getDeclaredField("mTN"); field.setAccessible(true); obj = field.get(toast); showMethod = obj.getClass().getDeclaredMethod("show", null); hideMethod = obj.getClass().getDeclaredMethod("hide", null); } catch (Exception e) { e.printStackTrace(); } } }复制代码
Android开发_弹出小小提示框_Toast
Android开发,弹出提示框“Toast”是因为输入了下面这句操作命令:
Toast.makeText(getApplicationContext(),"你的提示内容",Toast.LENGTH_SHORT).show();
Android开发操作如下:
先导入:
import android.widget.Toast;
关键代码:
Toast.makeText(getApplicationContext(),"提示内容",Toast.LENGTH_SHORT).show();
例子:
在一个activity中,只有一个button,单击这个button弹出“单击完成”提示框。
提示:
只需在onCreante方法中添加button的单击事件
完整代码:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_toast1);
//设置button的单击事件
findViewById(R.id.btnToast).setOnClickListener(new View.OnClickListener() {
public void onClick(View arg0) {
//弹出提示框
Toast.makeText(getApplicationContext(),"单击完成",Toast.LENGTH_SHORT).show();
}
});
}
安卓的toast 在ios里叫什么意思
这个类的接口设计如下:?#import 《Foundation/Foundation.h》 #import 《UIKit/UIKit.h》 typedef enum iToastGravity {iToastGravityTop = 1000001,iToastGravityBottom,iToastGravityCenter}iToastGravity;enum iToastDuration {iToastDurationLong = 10000,iToastDurationShort = 1000,iToastDurationNormal = 3000}iToastDuration;typedef enum iToastType {iToastTypeInfo = -100000,iToastTypeNotice,iToastTypeWarning,iToastTypeError}iToastType;@class iToastSettings;@interface iToast : NSObject {iToastSettings *_settings;NSInteger offsetLeft;NSInteger offsetTop;NSTimer *timer;UIView *view;NSString *text;}- (void) show;- (iToast *) setDuration:(NSInteger ) duration;- (iToast *) setGravity:(iToastGravity) gravityoffsetLeft:(NSInteger) leftoffsetTop:(NSInteger) top;- (iToast *) setGravity:(iToastGravity) gravity;- (iToast *) setPostion:(CGPoint) position;+ (iToast *) makeText:(NSString *) text;-(iToastSettings *) theSettings;@end===The interface of the SharedSettings ===@interface iToastSettings : NSObject《NSCopying》{NSInteger duration;iToastGravity gravity;CGPoint postition;iToastType toastType;NSDictionary *images;BOOL positionIsSet;}@property(assign) NSInteger duration;@property(assign) iToastGravity gravity;@property(assign) CGPoint postition;@property(readonly) NSDictionary *images;- (void) setImage:(UIImage *)img forType:(iToastType) type;+ (iToastSettings *) getSharedSettings;@end从接口上看,可以设置风格和显示时间,显示位置等,但是从实现代码上看是图片显示只是预留的接口,尚未实现。其显示的位置在设备旋转时也没有进行处理,没有进行横屏等其他方向的显示控制。简单的调用?1;设置显示位置?1设置显示位置和显示时长类型?1 setGravity
如何防止android Toast重复显示
Toast也是一个容器,可以包含各种View,并承载着它们显示。使用场景:1、需要提示用户,但又不需要用户点击“确定”或者“取消”按钮。2、不影响现有Activity运行的简单提示。用法:1、可以通过构造函数初始化:1 //初始化Toast 2 Toast toast = new Toast(this); 3 //设置显示时间,可以选择Toast.LENGTH_LONG或者Toast.LENGTH_SHORT 4 toast.setDuration(Toast.LENGTH_LONG); 5 //承载一个TextView,用来显示文字 6 TextView view = new TextView(this); 7 //设置TextView的值 8 view.setText("这是一个Toast提示"); 9 //设置TextView的布局10 view.setLayoutParams(new LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,LinearLayout.LayoutParams.WRAP_CONTENT));11 //Toast承载该12 TextViewtoast.setView(view);13 //显示Toast14 toast.show();2、上述的方法过于复杂,一般只适用于构造特殊界面的Toast,如果只想单纯的进行文字提示,可以用工厂方法,它会自动构建一个带边框和文字的Toast:1 //利用工厂方法构造一个简单的Toast,并链式结构的直接进行提示2 Toast.makeText(this, "这是一个Toast提示", Toast.LENGTH_LONG).show();总结:Toast可以说是最常用也是最简单的Android控件之一,其自动关闭的功能大大简化了代码量,不失为用户提示的最佳选择。
android里Toast是什么意思
toast是Android系统中一种消息框类型
拓展资料
Android中的Toast是一种简易的消息提示框。
当视图显示给用户,在应用程序中显示为浮动。和Dialog不一样的是,它永远不会获得焦点,无法被点击。用户将可能是在中间键入别的东西。Toast类的思想就是尽可能不引人注意,同时还向用户显示信息,希望他们看到。而且Toast显示的时间有限,Toast会根据用户设置的显示时间后自动消失。
本文相关文章:
oppor7s安卓版本太低怎么办(oppor7s安卓版本太低怎么办)
2024年11月4日 02:50
朵唯海王星v5(我想入手一款2000以下安卓机, 智能手机你懂的!!三星 htc 华为(大屏)优先!!!说下理由 谢谢)
2024年10月29日 02:00
一亿像素和苹果1200万(安卓都1个亿像素了,苹果手机为什么坚持1200万像素)
2024年10月26日 19:30
4.5寸手机(推荐几部4.5寸屏,运行内存1G以上,500万像素以上,安卓4.1 以上的手机)
2024年10月10日 19:55
htc nexus 9(安卓5.0 及以上---都有哪些手机)
2024年10月7日 02:10
安卓数据转移到已激活iphone(安卓数据如何转移到已激活iphone)
2024年10月5日 12:00
nokia x6 android 10(诺基亚x6是安卓系统吗 还具备了AI面部识别等功能)
2024年10月3日 14:10
安卓数据转移到已激活iphone(安卓数据怎么转移到已激活iphone)
2024年9月21日 01:35
WP7系统的手机与安卓系统的手机哪个更好?wp7手机流量这方面
2024年9月17日 16:05
timescape(安卓系统的Timescape 不小心被删掉怎样恢复)
2024年9月17日 13:35
更多文章:
wifi版平板能打电话吗(wifi版的ipad可以打电话发短信么)
2024年7月19日 13:10
小米note2升级miui12(升级MIUI 12有什么要注意的)
2024年4月18日 03:55
nokia 8800a 上市时间(诺基亚8800A有什么好的,为什么这么贵)
2024年5月22日 15:35
宝马530li真实成交价(宝马新五系2018款530Li现在价位多少钱)
2024年6月13日 15:11
青春如期中雯雯的手机是什么牌子的?雯雯抖音小米静静阿坤什么关系
2024年7月18日 09:10
gtx650天梯图(看这四款显卡,性能怎样GTX650/HD6670/HD6570/GTX750,分别能跑多少分)
2024年7月22日 12:53
华为p30实体店多少钱(实体店华为P30低配版3450元和荣耀20Pro低配版3050元,哪个值得入手)
2024年5月24日 16:58