请教 悬浮细胞培养方法顶部BUG的解决方法

查看: 1822|回复: 7
悬浮窗口置顶问题
阅读权限90
一直想实现类似迅雷的悬浮窗口,在网上看了&VC对话框隐藏运行(四)悬浮窗&,也下载了源码(编译后测试:bug就是悬浮窗口和主窗体都置顶),悬浮窗口是主对话框,如果设置了悬浮窗置顶功能后,主窗体因为是悬浮窗的子窗口,所以也跟着置顶了,但是迅雷的主窗体却不是置顶的(只是悬浮窗口置顶)可以被桌面上的其它窗体盖住,如果在主窗口中设置了不置顶,那么悬浮窗也跟着不置顶了,这可咋办?&&
源码下载地址:,我已经下载好了,老大帮忙改改就行,作者的功能都已经实现了,就有一个缺点,悬浮窗口和主窗体都置顶,改成悬浮窗口一直置顶,而主窗体不能置顶就可以了。
急(写程序中要用到了,驿站币全部拿出来了)。。。。。
附件: 您需要
才可以下载或查看,没有帐号?
帮你简单修改了下。具体见工程.
发帖求助前要善用【】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】和【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限90
本帖最后由 laomadeCD 于
09:34 编辑
hahacker 发表于
把 this 改成 GetDesktopWindow() 就可以解决问题,是能解决上面提到的窗口置顶的问题,但是新的问题又来 ...
帮你简单修改了下。具体见工程.
本帖子中包含更多资源
才可以下载或查看,没有帐号?
发帖求助前要善用【】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】和【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限200
给你转载了一篇文章,里面的代码就是很好的例子了
貌似跟你的这个很像,不过功能是满足了你要的!
楼主看下吧:
类似flashget的浮动窗口的实现
发帖求助前要善用【】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】和【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限90
如何不让子窗口跟父窗一起最小化?貌似只有让它们断绝“父子关系”。
CXxxDlg&&Xxxdlg=new CXxxDlg();
Xxxdlg-&Create(IDD_XXX_QUOTE);
Xxxdlg-&ShowWindow(SW_SHOW);
解决方法:可以让创建子窗口时指定其父窗口为桌用即可
CXxxDlg&&Xxxdlg=new CXxxDlg();
Xxxdlg-&Create(IDD_XXX_QUOTE, GetDesktopWindow());
Xxxdlg-&ShowWindow(SW_SHOW);
////////////////////////////////////////////////////////////////////
对于LZ的工程(VC对话框隐藏运行(四)悬浮窗.rar):
不妨修改其代试试:
//创建主窗口
dlg.Create(CMainAppDlg::IDD,GetDesktopWindow());
发帖求助前要善用【】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】和【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限90
laomadeCD 发表于
如何不让子窗口跟父窗一起最小化?貌似只有让它们断绝“父子关系”。
CXxxDlg&&Xxxdlg=new CXx ...
把 this 改成 GetDesktopWindow() 就可以解决问题,是能解决上面提到的窗口置顶的问题,但是新的问题又来了,那就是我想在CMainDlg里的一个按钮函数里写上隐藏/显示悬浮窗的功能,都是出现崩溃的现象,可能是我不会写,也不知道咋写?&&-----主界面上放一个按钮来测试隐藏/显示悬浮窗,如何写???我说的是那个“VC对话框隐藏运行(四)悬浮窗”里我上传的代码。。编译一下源码,只在主界面上加一个按钮,这个按钮函数里咋写,老是出现问题,气死我了。
发帖求助前要善用【】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】和【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限90
laomadeCD 发表于
帮你简单修改了下。具体见工程.
谢谢了,辛苦了哥们。分给您了。谢谢啊。呵呵!
发帖求助前要善用【】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】和【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限90
hahacker 发表于
谢谢了,辛苦了哥们。分给您了。谢谢啊。呵呵!
没事~都是相互学习嘛。
发帖求助前要善用【】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】和【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限90
laomadeCD 发表于
没事~都是相互学习嘛。
哥们,有空帮忙修改一下代码。谢谢。搞不定了。
发帖求助前要善用【】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】和【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
请点击客服咨询
VC驿站微信公众号cctry2009
Powered by Discuz!当前位置: >
炉石传说碰到对手卡牌悬停Bug怎么办
来源:18183
作者:阿三
游戏类型:卡牌游戏
游戏语言:简体中文
特征:宅男,奇幻
开发:暴雪娱乐
关注右侧公众号,回复“剁手”看全文移动端解决悬浮层(悬浮header、footer)会遮挡住内容的3种方法
作者:佚名
字体:[ ] 来源:互联网 时间:03-27 15:06:26
这篇文章主要介绍了移动端解决悬浮层(悬浮header、footer)会遮挡住内容的3种方法,本文讲解如何解决移动端悬浮层会遮挡住内容的3种方法,需要的朋友可以参考下
在现在的前端页面中,尤其是移动端,经常会需要将&header&或者是&footer&模块悬浮出来,跟随页面的滑动保持定位在页面的最上方或者是最下方,如下图所示。
&回复主题&模块,就是跟随页面的浮动一直悬浮在页面的最下方,代码结构如下。
代码如下:...&section class='footer'&
&div class='reply-topic'&回复主题&/div&&/section&...
实现这样的功能当然是利用position:fixed。但是,使用position:fixed有一个bug,以悬浮&footer&在最下方为例(悬浮&header&同理),当页面滑到最下方的时候,由于是fixed定位,脱离了正常文档流,导致会遮挡住一部分内容。如下所示:
上面左边是有问题的显示,右边为正常显示。那么,如何解决这个问题呢?在此,我抛砖引玉提出三种我的看法,希望能有更好的方法。
法一. Javasrript解决
  使用js解决,判定当滑动条滑到页面内容的最底端的时候,将原本会脱离文档流的fixed定位改为不脱离文档流的relative定位即可。
  使用脚本解决问题是最繁重的方法,能用css解决的尽量不使用脚本,但是也是一种方法。代码如下://滚动条在Y轴上的滚动距离
function getScrollTop(){
  return document.body.scrollT
//文档的总高度
function getScrollHeight(){&/p&
  return document.body.clientH
//浏览器视口的高度
function getWindowHeight(){
var windowHeight = 0;     patMode == "CSS1Compat")    {       windowHeight = document.documentElement.clientH    }    else  
{      windowHeight = document.body.clientH    }    return windowH
//滑动监听  window.onscroll = function(){
//滑到底部时footer定于最下方,假定&footer&的height为60
if((getScrollHeight() - getScrollTop() - getWindowHeight()) & 61)
$('.footer').css('position','fixed');
$('.footer').css('position','relative');
 法二.给body加上padding-bottom
  给html&body&标签加上一个padding-bottom属性,这样正常文档流的内容距离body底部就会产生一个padding-bottom设置的距离。
  缺点是,考虑到现在项目上线之后模块的复用及经常需要合并css文件,当其他页面不需要这个悬浮块,就会给不需要&footer&fixed定位的页面造成负担,不推荐使用这种方法。代码如下://假定&footer&的高度为60pxbody { padding-bottom: 60 }
法三.增加同级占位符&div&
  个人认为这个方法最为实用,在&footer&块之外再包裹一层div,然后再增加一个与&footer&同级的&div&块,这个&div&块的高度设置为与&footer&同样高,不包含任何内容,这样就可以起到一个占位符的效果,在页面最底占据与&footer&同样高度的空间,当然页面滑到最下方,原本的&footer&悬动块就会与这个占位块完美重叠。且不会对其他页面产生影响。代码如下:
  唯一缺点是不符合语义化,增加了无实质内容的空标签。代码如下:&!-- footer外包裹一层div--&&div&
&!--充当占位符的div块,无实质内容 --&
&div style="height:60"&&/div& &/p&
&!--fixed悬浮出来的footer --&
&section class='footer'&
&div class='reply-topic'&回复主题&/div&
&/section&&/div&
 以上是我想到的三种方法,才疏学浅,文中若有纰漏错误或者有更好的方法,万望告知,感谢。
大家感兴趣的内容
12345678910
最近更新的内容你的位置: >
> 《滑动到顶部悬浮功能条》源码学习整理笔记
实现原理解析:
我这里使用了不同的颜色,将后面会讲解到的几个布局标注了出来。
这里有几个对象A布局、B布局、C布局需要事先说明一下:
A布局示意图:
B布局示意图:
C布局示意图:
1.Activity初始化时的状态,此时C布局在B布局上:
2.当向上滑动屏幕,布局B也会随着滚动布局向上滚动:
3.当向上滑动的距离超过了开始时顶部布局的高度H时,本来在B上的子布局C就会被移除,然后加到A布局上:
代码实现部分:
// 自定义ScrollView滑动监听,获取实时的Y轴滑动距离
public void onScroll(int scrollY)
Log.d(&guxuewu&, &scrollY=&& + scrollY);
// 如果滑动的距离大于等于了顶部布局的高度H
if (scrollY &= searchLayoutTop)
// 并且固定布局C的父布局不是A布局
if (hoveringLayout.getParent() != search01)
// B布局移除布局C
search02.removeView(hoveringLayout);
// A加入布局C
search01.addView(hoveringLayout);
// 如果滑动距离小于了顶部布局的高度
// 并且固定布局C的父布局不是B布局
if (hoveringLayout.getParent() != search02)
// A布局移除固定布局C
search01.removeView(hoveringLayout);
// B加入固定布局C
search02.addView(hoveringLayout);
HoveringScrollSampleActivity.java
public class HoveringScrollSampleActivity extends Activity implements OnScrollListener
// 自定义的ScrollView
private HoveringScrollview hoveringS
// 顶部布局的高度
private int searchLayoutT
// 顶部布局
private RelativeL
// 中间固定条的布局
private LinearLayout hoveringL
// 不跟随ScrollView移动的父布局
private LinearLayout search01;
// 跟随ScrollView移动的父布局
// Search01的布局高度要和search02的设置一样,这样看起来就不会有替换的感觉
private LinearLayout search02;
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_samples);
initViews();
private void initViews()
hoveringLayout = (LinearLayout)findViewById(R.id.hoveringLayout);
hoveringScrollview = (HoveringScrollview)findViewById(R.id.hoveringScrollview);
search01 = (LinearLayout)findViewById(R.id.search01);
search02 = (LinearLayout)findViewById(R.id.search02);
rlayout = (RelativeLayout)findViewById(R.id.rlayout);
hoveringScrollview.setOnScrollListener(this);
public void onWindowFocusChanged(boolean hasFocus)
super.onWindowFocusChanged(hasFocus);
// 每次启动,设置顶部布局的高度
if (hasFocus)
searchLayoutTop = rlayout.getBottom();
// 自定义ScrollView滑动监听,获取实时的Y轴滑动距离
public void onScroll(int scrollY)
Log.d(&guxuewu&, &scrollY=&& + scrollY);
// 如果滑动的距离大于等于了顶部布局的高度H
if (scrollY &= searchLayoutTop)
// 并且固定布局C的父布局不是A布局
if (hoveringLayout.getParent() != search01)
// B布局移除布局C
search02.removeView(hoveringLayout);
// A加入布局C
search01.addView(hoveringLayout);
// 如果滑动距离小于了顶部布局的高度
// 并且固定布局C的父布局不是B布局
if (hoveringLayout.getParent() != search02)
// A布局移除固定布局C
search01.removeView(hoveringLayout);
// B加入固定布局C
search02.addView(hoveringLayout);
// 点击事件监听
public void clickListenerMe(View view)
if (view.getId() == R.id.btnQiaBuy)
Toast.makeText(this, &抢购成功&, Toast.LENGTH_SHORT).show();
HoveringScrollview.java
public class HoveringScrollview extends ScrollView
// 滚动监听器
private OnScrollListener onScrollL
* 主要是用在用户手指离开本view,本view还在继续滑动,我们用来保存Y的距离,然后做比较
private int lastScrollY;
public HoveringScrollview(Context context, AttributeSet attrs)
super(context, attrs);
* 设置滚动监听接口
public void setOnScrollListener(OnScrollListener onScrollListener)
this.onScrollListener = onScrollL
* 用于用户手指离开MyScrollView的时候获取MyScrollView滚动的Y距离,然后回调给onScroll方法中
@SuppressLint(&HandlerLeak&)
private Handler handler = new Handler()
public void handleMessage(android.os.Message msg)
int scrollY = HoveringScrollview.this.getScrollY();
// 此时的距离和记录下的距离不相等,在隔6毫秒给handler发送消息
if (lastScrollY != scrollY)
lastScrollY = scrollY;
// 相当于开启了一个无线循环的消息机制
handler.sendMessageDelayed(handler.obtainMessage(), 20);
if (onScrollListener != null)
onScrollListener.onScroll(scrollY);
@SuppressLint(&ClickableViewAccessibility&)
public boolean onTouchEvent(MotionEvent ev)
// 当用户的手在HoveringScrollview上面的时候,
// 直接将HoveringScrollview滑动的Y方向距离回调给onScroll方法中,
if (onScrollListener != null)
onScrollListener.onScroll(lastScrollY = this.getScrollY());
switch (ev.getAction())
// 当用户抬起手的时候,HoveringScrollview可能还在滑动,
// 所以当用户抬起手我们隔6毫秒给handler发送消息,
// 在handler处理 HoveringScrollview滑动的距离
case MotionEvent.ACTION_UP:
handler.sendMessageDelayed(handler.obtainMessage(), 20);
return super.onTouchEvent(ev);
* 滚动的回调接口
public interface OnScrollListener
* 回调方法, 返回本view滑动的Y方向距离
public void onScroll(int scrollY);
布局文件activity_samples.xml
&?xml version=&1.0& encoding=&utf-8&?&
&RelativeLayout xmlns:android=&/apk/res/android&
android:layout_width=&match_parent&
android:layout_height=&match_parent&
android:orientation=&vertical&
android:paddingBottom=&@dimen/activity_vertical_margin& &
&com.steve.hovering.samples.HoveringScrollview
android:id=&@+id/hoveringScrollview&
android:layout_width=&match_parent&
android:layout_height=&match_parent& &
&!-- 套在ScrollView中的唯一父布局 --&
&LinearLayout
android:layout_width=&match_parent&
android:layout_height=&wrap_content&
android:orientation=&vertical& &
&RelativeLayout
android:id=&@+id/rlayout&
android:layout_width=&wrap_content&
android:layout_height=&wrap_content&
android:layout_gravity=&center_horizontal& &
android:id=&@+id/tv&
android:layout_width=&wrap_content&
android:layout_height=&wrap_content&
android:gravity=&center_vertical&
android:text=&TOP信息占位\nTOP信息\nTOP信息\nTOP信息占位&
android:textColor=&#d19275&
android:textSize=&30sp& /&
&/RelativeLayout&
&!-- 跟随ScrollView移动的父布局 --&
&LinearLayout
android:id=&@+id/search02&
android:layout_width=&match_parent&
android:layout_height=&70dp&
android:background=&@android:color/holo_green_light& &
&!-- 这个悬浮条必须是固定高度 --&
&!-- android:background=&#A8A8A8& --&
&LinearLayout
android:id=&@+id/hoveringLayout&
android:layout_width=&match_parent&
android:layout_height=&wrap_content&
android:gravity=&center_vertical&
android:orientation=&horizontal&
android:padding=&10dp& &
android:layout_width=&0dp&
android:layout_height=&wrap_content&
android:layout_weight=&1&
android:gravity=&center&
android:padding=&10dp&
android:text=&¥188\r\n原价:¥399&
android:textColor=&#FF7F00& /&
android:id=&@+id/btnQiaBuy&
android:layout_width=&0dp&
android:layout_height=&wrap_content&
android:layout_weight=&1&
android:background=&#FF7F00&
android:onClick=&clickListenerMe&
android:padding=&10dp&
android:text=&立即抢购&
android:textColor=&#FFFFFF& /&
&/LinearLayout&
&/LinearLayout&
android:layout_width=&match_parent&
android:layout_height=&wrap_content&
android:gravity=&center_horizontal&
android:text=&1测试内容\n2测试内容\n3测试内容\n4测试内容\n5测试内容\n6测试内容\n7测试内容\n8测试内容\n9测试内容\n10测试内容\n11测试内容\n12测试内容\n13测试内容\n14测试内容\n15测试内容\n16测试内容\n测试内容\n测试内容\n测试内容\n测试内容\n测试内容\n测试内容\n测试内容\n测试内容\n测试内容\n测试内容\n27测试内容&
android:textSize=&40sp& /&
&/LinearLayout&
&/com.steve.hovering.samples.HoveringScrollview&
&!-- 固定不动的用来装固定布局的父布局 --&
&LinearLayout
android:id=&@+id/search01&
android:layout_width=&match_parent&
android:layout_height=&70dp&
android:background=&@android:color/darker_gray&
android:orientation=&vertical& &
&/LinearLayout&
&/RelativeLayout&
学习大神的代码总能收益颇多,之前也一直想研究这个效果怎么做出来,无意在论坛看到这个源码分享,便迫不及待拿来细细研究。
研究后发现自己原来好多实现想法想复杂了,原来这么简单其实就可以实现这个效果。
所以我们还是得敢于尝试,尝试用最简单的方法去实现想要的效果。
项目源码地址:
转载请注明: &
与本文相关的文章

我要回帖

更多关于 淘宝悬浮导航制作方法 的文章

 

随机推荐