手机浮动窗口软件不会浮动怎么回事

智能手机教程子分类投资股票风险好大,花钱如流水,一分钟就输了两百,跟赌博差不多。不能用手机玩,手机软件信息不准。还好_百度知道
投资股票风险好大,花钱如流水,一分钟就输了两百,跟赌博差不多。不能用手机玩,手机软件信息不准。还好
一分钟就输了两百.hiphotos.baidu。还好是小笔投资,会亏得很惨。不能用手机玩。&/zhidao/pic/item/962bd40735fae6cdebc4d2a70f79;
其他类似问题
为您推荐:
手机软件的相关知识
其他3条回答
建议用同花顺或者东方财富软件绑定证券帐号使用
我的用过了没有延迟
信息准不准呢?我看得明明是跌,买跌就亏了。亏了买涨,又亏了。怎么浮动那么快。问网友说头一次见人用手机玩的,信息不准。
五秒刷新一次吧,至少我到现在没碰到过延迟的现象
嗯嗯,第一次投资就失败。好伤心。
你也太狠了一点,第一次就百来w万的大手笔啊
对不起发错了
手机版的我都删了。
我现在用的很好啊,
给我看看你得交易。看看是否真的如你所说的。
我又不骗人,看看这个这个分数像是骗人的吗?
嗯嗯。你用什么软件。
你知道股票的起源吗?
也不太清楚,就是因为荷兰的郁金香事情好像是,那个时候的郁金香吵到了你和黄金差不多的价格
所以入市须谨慎,股市有风位
所以要提醒大家。
呵呵,做什么都是有风险滴
不可能。买卖交易起码赚差价。物物交换。
股票是风险投资。不是稳定投资。
好嘛,买卖交易除外,
股票风险大,去年我都亏点50w,不敢轻易出手咯
现在我都买小探路。
我不太敢出手,
晚上睡不着了。还好是小失误。大失误,一秒就会亏了多少万不知道。
嗯,要谨慎才行
睡觉咯,拜,有时间再一起探讨
嗯嗯。晚安吉祥如意
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁Samsung GALAXY A7如何设置浮动信息(A7000)_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
Samsung GALAXY A7如何设置浮动信息(A7000)
||暂无简介
总评分0.0|
阅读已结束,如果下载本文需要使用0下载券
想免费下载更多文档?
下载文档到电脑,查找使用更方便
还剩4页未读,继续阅读
你可能喜欢QQ输入法手机版浮动键盘开启方法图解
作者:佚名
字体:[ ] 来源:互联网 时间:07-23 09:37:27
手机版QQ拼音输入法是由腾讯推出的一款可以在移动客户端使用的输入法工具,QQ输入法支持基本的拼音、英文、五笔、笔画、数字符号输入,还支持手写、整句输入、智能纠错等扩展功能,今天小编就都大家QQ输入法浮动键盘如何开启
QQ输入法浮动键盘开启方法详解。QQ输入法支持基本的拼音、英文、五笔、笔画、数字符号输入,还支持手写、整句输入、智能纠错等扩展功能,为用户带来更快、更稳定、更流畅的输入体验。今天小编就都大家QQ输入法浮动键盘如何开启。
相关知识:
软件名称:QQ手机输入法 for android v4.3_1214 安卓版软件大小:7.45MB更新时间:
1)安装QQ输入法,让其进入输入状态,依次点击【齿轮】【键盘切换】(如下图)
2)最后点击【浮动键盘】即可(如下图)
大家感兴趣的内容
12345678910
最近更新的内容基于Android的浮动组件,可以用于应用中的新功能展示等等。-手机软件-电脑编程网基于Android的浮动组件,可以用于应用中的新功能展示等等。作者:%e9%87%87%e9%9b%86%e4%b8%9c%e7%af%b1%e4%b8%8b 和相关&&
前言
在开发Android应用时,加新功能是必不可少的,我们加入了新的功能,有的一看界面就可以看出来,但是有的新功能就比较隐蔽,也就是用户很难知道你添加了这个新功能,这个时候就需要用户在打开我们的应用时给出一些提示,说明我们在哪里添加了新功能,点击哪里可以看到这个新功能。这时我们第一时间想到的可能是Toast,因为它用法简单,又不影响用户操作,但是它有个缺点,就是不能明确的指示是哪里添加了新功能,除非你用文字描述出来。为此,我基于Toast编写了一个小组件FloatTextToast(下面遇到的这个名字代替我写的这个组件),他和Toast的用法一样简单,并且弥补了Toast的缺点,也更显得更好看。
你可以学到
Toast的基本用法
Android的消息机制,如何创建自己的消息队列
怎样在Activity启动时获取一个View的width、height、top、left等属性
首先你要有一个处理好的9 PNG的图片,用于自适应文字显示,关于9 PNG处理可以参考Android Doc
要显示在哪个View的下面,就要知道这个目标View的位置
把要显示的文本放在一个TextView里,使用Toast的setView方法设置Toast要显示的View。
根据得到的位置,最后就是使用Toast的setGravity方法把要显示的内容放到正确的位置显示出来即可。
总的来说首先就是要知道目标View,根据targetView计算出要显示提示的位置,然后根据位置使用Toast把提示的文本显示出来。但是这里有几个难点,下面就一一解决
Activity加载完成时获取targetVIew的宽高和位置属性
我们加入了新的功能提示,自然会在用户打开这个界面的时候就提示,但是在UI没有渲染完成绑定倒Window上的时候,是不能获取倒targetView的width、height和position的,那么我们怎么才能知道targetView的这些属性呢?Activity的onAttachedToWindow回调方法是不能用的,况且它是在API 5加上的,以前的API中并没有。不过我们还有一种方法,那就是在显示提示的时候获取targetView的属性,如果获取不到(为0)就一直获取,直到获取到为止,这其实是一个轮询。为了达到这一目的,我们在开发者调用FloatTextToast.show()的时候使用Android的Message机制轮询获取一个targetView的属性,如果获取到,就会显示提示文字了。在此之前先看下FloatTextToast构造函数,可以对它有个大概的了解,防止后面的代码中出现的成员变量不认识。
[java] view plaincopyprint?
private&FloatTextToast(Context&context,View&targetView)&{&&
&&&&&&&&this.mTargetView&=&targetV&&
&&&&&&&&this.mContext=&&&
&&&&&&&&mToast=new&Toast(mContext);&&
&&&&&&&&mContentView=new&TextView(mContext);&&
&&&&&&&&mContentView.setBackgroundResource(R.drawable.float_text_toast_bg);&&
&&&&&&&&mContentView.setTextColor(Color.BLACK);&&
&&&&&&&&mContentView.PLEX_UNIT_DIP,16);&&
&&&&&&&&mToast.setView(mContentView);&&
&&&&&&&&&&
&&&&&&&&//初始化一个Handler线程 &&
&&&&&&&&mHandlerThread=new&HandlerThread("FloatTextToast");&&
&&&&&&&&mHandlerThread.start();&&
&&&&&&&&mHandler=new&FloatTextToastHandler(mHandlerThread.getLooper());&&
&&&&}&&
private floattexttoast(context context,view targetview) {
this.mtargetview =
this.mcontext=
mtoast=new toast(mcontext);
mcontentview=new textview(mcontext);
mcontentview.setbackgroundresource(r.drawable.float_text_toast_bg);
mcontentview.settextcolor(color.black);
mcontentview.plex_unit_dip,16);
mtoast.setview(mcontentview);
//初始化一个handler线程
mhandlerthread=new handlerthread("floattexttoast");
mhandlerthread.start();
mhandler=new floattexttoasthandler(mhandlerthread.getlooper());
}
自定义自己的消息循环机制
要想在一个自定义的组件中使用Message机制,一定要有自己的Looper机制,我们不能使用Activity的Looper,因为主Looper可能会有其他的Message需要处理,这就会导致我们的show方法会延迟调用,这样效果就不好了,所以要有一个专门的Looper来处理此Message。要声明自己的Looper,就需要HandlerThread这个类的配合了,这可是个好东西,使用它你会很容易的创建一个自己的线程用于处理你Message。使用方法很简单,如下代码:
[java] view plaincopyprint?
//初始化一个Handler线程 &&
&&&&&&&&mHandlerThread=new&HandlerThread("FloatTextToast");&&
&&&&&&&&mHandlerThread.start();&&
&&&&&&&&mHandler=new&FloatTextToastHandler(mHandlerThread.getLooper());&&
//初始化一个handler线程
mhandlerthread=new handlerthread("floattexttoast");
mhandlerthread.start();
mhandler=new floattexttoasthandler(mhandlerthread.getlooper());这样就声明了一个HandlerThread并且让它运行,运行之后我们就可以获取一个属于该Thread的Looper,然后把Message发送给这个Looper,那么这个线程就可以处理你发送的消息了。。看看我们的自定义Handler
[java] view plaincopyprint?
private&class&FloatTextToastHandler&extends&Handler{&&
&&
&&&&&&&&public&FloatTextToastHandler(Looper&looper)&{&&
&&&&&&&&&&&&super(looper);&&
&&&&&&&&}&&
&&
&&&&&&&&@Override&&
&&&&&&&&public&void&handleMessage(Message&msg)&{&&
&&&&&&&&&&&&switch(msg.what){&&
&&&&&&&&&&&&case&WHAT_SHOW:&&
&&&&&&&&&&&&&&&&showInHandler();&&
&&&&&&&&&&&&}&&
&&&&&&&&}&&
&&&&&&&&&&
&&&&&&&&&&
&&&&}&&
private class floattexttoasthandler extends handler{
public floattexttoasthandler(looper looper) {
super(looper);
public void handlemessage(message msg) {
switch(msg.what){
case what_show:
showinhandler();
}它需要传递一个Looper作为构造参数声明,意思就是使用这个Looper处理我发send的Message的意思。上面的代码
[java] view plaincopyprint?
mHandler=new&FloatTextToastHandler(mHandlerThread.getLooper());&&
mhandler=new floattexttoasthandler(mhandlerthread.getlooper());正是我们使用自己开启的线程处理我们的Message的意思。下面看下我们的showInHandler()方法是怎么处理的。
[java] view plaincopyprint?
/**在Handler调用的show方法,主要为了等待{@link&#mTargetView}的位置*/&&
&&&&private&void&showInHandler(){&&
&&&&&&&&int[]&targetPos=getTargetViewPos();&&
&&&&&&&&if(targetPos[0]==0&&targetPos[1]==0){&&
&&&&&&&&&&&&mHandler.sendEmptyMessageDelayed(WHAT_SHOW,&100);&&
&&&&&&&&}else{&&
&&&&&&&&&&&&final&Rect&contentPos=getContentViewPos(targetPos);&&
&&&&&&&&&&&&mToast.setGravity(Gravity.LEFT|Gravity.TOP,&contentPos.left,&contentPos.top);&&
&&&&&&&&&&&&mToast.show();&&
&&&&&&&&}&&
&&&&}&&
/**在handler调用的show方法,主要为了等待{@link #mtargetview}的位置*/
private void showinhandler(){
int[] targetpos=gettargetviewpos();
if(targetpos[0]==0&&targetpos[1]==0){
mhandler.sendemptymessagedelayed(what_show, 100);
final rect contentpos=getcontentviewpos(targetpos);
mtoast.setgravity(gravity.left|gravity.top, contentpos.left, contentpos.top);
mtoast.show();
}该方法其实就是在获取targetVIew的位置,如果获取不到,则向自定义的Looper里发送一个Message重新调用该函数,如果得到了位置,那么就调用Toast的setGravity方法设置好要显示文本的位置,然后显示即可。
获取要显示文本的位置
要获取显示的位置,就要知道targetVIew的位置以及它的宽、高,这样就能计算要显示文本的位置了。View组件都有一个函数,可以把自己在Window里的坐标转换为一个数组。
[java] view plaincopyprint?
private&int[]&getTargetViewPos(){&&
&&&&&&&&final&int[]&targetPos=new&int[2];&&
&&&&&&&&mTargetView.getLocationInWindow(targetPos);&&
&&&&&&&&return&targetP&&
&&&&}&&
private int[] gettargetviewpos(){
final int[] targetpos=new int[2];
mtargetview.getlocationinwindow(targetpos);
}这样,就返回了targetView的xy坐标了。光有targetView的坐标还不够,还要有contentView最终要显示的位置。
[java] view plaincopyprint?
/**&
&&&&&*&计算获取浮动文本显示的位置,把浮动文本放在targetView的中心处&
&&&&&*&@return&一个包含top和left的Rect&
&&&&&*/&&
&&&&private&&Rect&getContentViewPos(int[]&targetPos){&&
&&&&&&&&final&Rect&windowVisibleRect=new&Rect();&&
&&&&&&&&final&View&targetView=mTargetV&&
&&&&&&&&final&TextView&contentView=mContentV&&
&&&&&&&&//状态栏高度 &&
&&&&&&&&targetView.getWindowVisibleDisplayFrame(windowVisibleRect);&&
&&&&&&&&int&statusBarHeight=windowVisibleRect.&&
&&&&&&&&&&
&&&&&&&&//背景图那个三角箭头的位置 &&
&&&&&&&&final&TextPaint&textPaint=contentView.getPaint();&&
&&&&&&&&int&contentW=(int)textPaint.measureText((String)contentView.getText());&&
&&&&&&&&int&arrowPos=(int)(contentW*(30.0/160));&&
&&&&&&&&&&
&&&&&&&&final&Rect&rect&=&new&Rect();&&
&&&&&&&&rect.left&=&targetPos[0]+targetView.getWidth()/2-arrowP&&
&&&&&&&&rect.top&=&targetPos[1]-statusBarHeight&+&targetView.getHeight();&&
&&&&&&&&return&&&
&&&&}&&
* 计算获取浮动文本显示的位置,把浮动文本放在targetview的中心处
* @return 一个包含top和left的rect
rect getcontentviewpos(int[] targetpos){
final rect windowvisiblerect=new rect();
final view targetview=
final textview contentview=
//状态栏高度
targetview.getwindowvisibledisplayframe(windowvisiblerect);
int statusbarheight=windowvisiblerect.
//背景图那个三角箭头的位置
final textpaint textpaint=contentview.getpaint();
int contentw=(int)textpaint.measuretext((string)contentview.gettext());
int arrowpos=(int)(contentw*(30.0/160));
final rect rect = new rect();
rect.left = targetpos[0]+targetview.getwidth()/2-
rect.top = targetpos[1]-statusbarheight + targetview.getheight();
}这个函数的功能就是让文本显示在targetView的下方的横向中间的位置,也就是文本的背景尖角三角要指向targetView横向中间的位置,这样才好看些。为了这个才需要使用Paint测量文本的宽度,所以这也是该组件的一个缺陷,不能显示String格式之外的字符,比如SpannableString。
完整的组件代码
上面是对组件代码的拆分讲解,是为了说明我们当时实现这个组件的想法以及步骤,下面就整体把代码列出来,明了的看一下。
[java] view plaincopyprint?
/**&
&*&浮动的文本显示。根据一个提供的View,可以把文本显示到该View的下面.&
&*&可以设置显示的时间,多了该时间后自动消失。目前只支持纯文本{@link&String}类型的显示&
&*&因为要计算显示文本的宽度。&
&*&@author&michael_li(飞雪无情)&
&*&@since&&下午04:57:36&
&*/&&
public&class&FloatTextToast&{&&
&&&&public&static&final&int&LENGTH_LONG=Toast.LENGTH_LONG;&&
&&&&public&static&final&int&LENGTH_SHORT=Toast.LENGTH_SHORT;&&
&&&&private&static&final&int&WHAT_SHOW=1;&&
&&&&&&
&&&&private&Context&mC&&
&&&&private&View&mTargetV&&
&&&&private&Toast&mT&&
&&&&private&&TextView&mContentV&&
&&&&&&
&&&&private&HandlerThread&mHandlerT&&
&&&&private&FloatTextToastHandler&mH&&
&&&&private&FloatTextToast(Context&context,View&targetView)&{&&
&&&&&&&&this.mTargetView&=&targetV&&
&&&&&&&&this.mContext=&&&
&&&&&&&&mToast=new&Toast(mContext);&&
&&&&&&&&mContentView=new&TextView(mContext);&&
&&&&&&&&mContentView.setBackgroundResource(R.drawable.float_text_toast_bg);&&
&&&&&&&&mContentView.setTextColor(Color.BLACK);&&
&&&&&&&&mContentView.PLEX_UNIT_DIP,16);&&
&&&&&&&&mToast.setView(mContentView);&&
&&&&&&&&&&
&&&&&&&&//初始化一个Handler线程 &&
&&&&&&&&mHandlerThread=new&HandlerThread("FloatTextToast");&&
&&&&&&&&mHandlerThread.start();&&
&&&&&&&&mHandler=new&FloatTextToastHandler(mHandlerThread.getLooper());&&
&&&&}&&
&&&&/**&
&&&&&*&生成一个FloatTextToast&
&&&&&*&@param&context&Activity&上下文&
&&&&&*&@param&targetView&&目标View,浮动文本要显示在哪个View下面&
&&&&&*&@param&text&要显示的文本&
&&&&&*&@param&duration&浮动文本显示的时间&{@link&#LENGTH_LONG}&{@link&#LENGTH_SHORT}&
&&&&&*&@return&一个FloatTextToast,可以调用{@link&#show()}显示&
&&&&&*/&&
&&&&public&static&FloatTextToast&makeText(Context&context,View&targetView,&String&text,&int&duration)&{&&
&&&&&&&&final&FloatTextToast&floatToast=new&FloatTextToast(context,targetView);&&
&&&&&&&&final&TextView&contentView=floatToast.mContentV&&
&&&&&&&&contentView.setText(text);&&
&&&&&&&&floatToast.mToast.setDuration(duration);&&
&&&&&&&&return&floatT&&
&&&&}&&
&&&&/**&
&&&&&*&显示浮动文本&
&&&&&*/&&
&&&&public&void&show(){&&
&&&&&&&&mHandler.sendEmptyMessage(WHAT_SHOW);&&
&&&&}&&
&&&&/**在Handler调用的show方法,主要为了等待{@link&#mTargetView}的位置*/&&
&&&&private&void&showInHandler(){&&
&&&&&&&&int[]&targetPos=getTargetViewPos();&&
&&&&&&&&if(targetPos[0]==0&&targetPos[1]==0){&&
&&&&&&&&&&&&mHandler.sendEmptyMessageDelayed(WHAT_SHOW,&100);&&
&&&&&&&&}else{&&
&&&&&&&&&&&&final&Rect&contentPos=getContentViewPos(targetPos);&&
&&&&&&&&&&&&mToast.setGravity(Gravity.LEFT|Gravity.TOP,&contentPos.left,&contentPos.top);&&
&&&&&&&&&&&&mToast.show();&&
&&&&&&&&}&&
&&&&}&&
&&&&private&int[]&getTargetViewPos(){&&
&&&&&&&&final&int[]&targetPos=new&int[2];&&
&&&&&&&&mTargetView.getLocationInWindow(targetPos);&&
&&&&&&&&return&targetP&&
&&&&}&&
&&&&/**&
&&&&&*&计算获取浮动文本显示的位置,把浮动文本放在targetView的中心处&
&&&&&*&@return&一个包含top和left的Rect&
&&&&&*/&&
&&&&private&&Rect&getContentViewPos(int[]&targetPos){&&
&&&&&&&&final&Rect&windowVisibleRect=new&Rect();&&
&&&&&&&&final&View&targetView=mTargetV&&
&&&&&&&&final&TextView&contentView=mContentV&&
&&&&&&&&//状态栏高度 &&
&&&&&&&&targetView.getWindowVisibleDisplayFrame(windowVisibleRect);&&
&&&&&&&&int&statusBarHeight=windowVisibleRect.&&
&&&&&&&&&&
&&&&&&&&//背景图那个三角箭头的位置 &&
&&&&&&&&final&TextPaint&textPaint=contentView.getPaint();&&
&&&&&&&&int&contentW=(int)textPaint.measureText((String)contentView.getText());&&
&&&&&&&&int&arrowPos=(int)(contentW*(30.0/160));&&
&&&&&&&&&&
&&&&&&&&final&Rect&rect&=&new&Rect();&&
&&&&&&&&rect.left&=&targetPos[0]+targetView.getWidth()/2-arrowP&&
&&&&&&&&rect.top&=&targetPos[1]-statusBarHeight&+&targetView.getHeight();&&
&&&&&&&&return&&&
&&&&}&&
&&&&private&class&FloatTextToastHandler&extends&Handler{&&
&&
&&&&&&&&public&FloatTextToastHandler(Looper&looper)&{&&
&&&&&&&&&&&&super(looper);&&
&&&&&&&&}&&
&&
&&&&&&&&@Override&&
&&&&&&&&public&void&handleMessage(Message&msg)&{&&
&&&&&&&&&&&&switch(msg.what){&&
&&&&&&&&&&&&case&WHAT_SHOW:&&
&&&&&&&&&&&&&&&&showInHandler();&&
&&&&&&&&&&&&}&&
&&&&&&&&}&&
&&&&&&&&&&
&&&&&&&&&&
&&&&}&&
}&&
* 浮动的文本显示。根据一个提供的view,可以把文本显示到该view的下面.
* 可以设置显示的时间,多了该时间后自动消失。目前只支持纯文本{@link string}类型的显示
* 因为要计算显示文本的宽度。
* @author michael_li(飞雪无情)
下午04:57:36
*/
public class floattexttoast {
public static final int length_long=toast.length_
public static final int length_short=toast.length_
private static final int what_show=1;
private handlert
private floattextt
private floattexttoast(context context,view targetview) {
this.mtargetview =
this.mcontext=
mtoast=new toast(mcontext);
mcontentview=new textview(mcontext);
mcontentview.setbackgroundresource(r.drawable.float_text_toast_bg);
mcontentview.settextcolor(color.black);
mcontentview.plex_unit_dip,16);
mtoast.setview(mcontentview);
//初始化一个handler线程
mhandlerthread=new handlerthread("floattexttoast");
mhandlerthread.start();
mhandler=new floattexttoasthandler(mhandlerthread.getlooper());
* 生成一个floattexttoast
* @param context activity 上下文
* @param targetview
目标view,浮动文本要显示在哪个view下面
* @param text 要显示的文本
* @param duration 浮动文本显示的时间 {@link #length_long} {@link #length_short}
* @return 一个floattexttoast,可以调用{@link #show()}显示
public static floattexttoast maketext(context context,view targetview, string text, int duration) {
final floattexttoast floattoast=new floattexttoast(context,targetview);
final textview contentview=floattoast.
contentview.settext(text);
floattoast.mtoast.setduration(duration);
* 显示浮动文本
public void show(){
mhandler.sendemptymessage(what_show);
/**在handler调用的show方法,主要为了等待{@link #mtargetview}的位置*/
private void showinhandler(){
int[] targetpos=gettargetviewpos();
if(targetpos[0]==0&&targetpos[1]==0){
mhandler.sendemptymessagedelayed(what_show, 100);
final rect contentpos=getcontentviewpos(targetpos);
mtoast.setgravity(gravity.left|gravity.top, contentpos.left, contentpos.top);
mtoast.show();
private int[] gettargetviewpos(){
final int[] targetpos=new int[2];
mtargetview.getlocationinwindow(targetpos);
* 计算获取浮动文本显示的位置,把浮动文本放在targetview的中心处
* @return 一个包含top和left的rect
rect getcontentviewpos(int[] targetpos){
final rect windowvisiblerect=new rect();
final view targetview=
final textview contentview=
//状态栏高度
targetview.getwindowvisibledisplayframe(windowvisiblerect);
int statusbarheight=windowvisiblerect.
//背景图那个三角箭头的位置
final textpaint textpaint=contentview.getpaint();
int contentw=(int)textpaint.measuretext((string)contentview.gettext());
int arrowpos=(int)(contentw*(30.0/160));
final rect rect = new rect();
rect.left = targetpos[0]+targetview.getwidth()/2-
rect.top = targetpos[1]-statusbarheight + targetview.getheight();
private class floattexttoasthandler extends handler{
public floattexttoasthandler(looper looper) {
super(looper);
public void handlemessage(message msg) {
switch(msg.what){
case what_show:
showinhandler();
}
}
此组件和Toast的实现方法一样,所以上手不难,只需使用makeText静态方法生成一个即可
[java] view plaincopyprint?
FloatTextToast.makeText(Context&context,&View&targetView,&String&text,&int&duration).show()&&
floattexttoast.maketext(context context, view targetview, string text, int duration).show()就这么简单,传进去几个参数,show出即可,和Toast一样好用。
小结
这里主要是通过类之间的组合编写一个一个FloatTextToast组件,便于在应用中提示一些信息,不光局限于新功能的提示,还有其他的点击查看个人信息等等,就如上面的效果图一样。这里主要的难点就在于Activity启动获取targetView的状态,这里采用了不受影响的自定义的消息机制,能及时的获取targetView的状态。这里也采用的Toast的队列机制,这样就能够更好的一个个的提示,让用户看完一个再显示另外一个,不至于一下子全显示出来,而用户没有时间看。这里还采用了Paint用于测量文本的真实宽度,所以也有了一些缺陷,如果哪位有更好的方法,也可以留言告知我,不胜感激。
附上组件源代码和效果图的Demo下载&http://download.csdn.net/detail/michael__li/3904636
相关资料:|||||||基于Android的浮动组件,可以用于应用中的新功能展示等等。来源网络,如有侵权请告知,即处理!编程Tags:                &                    }

我要回帖

更多关于 不会晨勃是怎么回事 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信