导航:首页 > 操作系统 > android顶部滑动菜单

android顶部滑动菜单

发布时间:2023-02-18 10:31:07

android listview如何按时加滚动到顶部

listview的一些方法:

1.public
void setSelection (int position)

position位置的item置顶(即position位置的item到listview的最顶端),但是,没有从原来位置到顶端的滑动效果。

2.public
void setSelectionFromTop (int position, int y)

与setSelection 类似。setSelection(position)就是setSelectionFromTop (position,0)

选中position指定的项目,并将所选项置于距离ListView顶端y像素的位置

参数

position 需要选中的项目的索引(从0开始)

y
距离ListView(包括间隙)顶端的位置

3.public
void smoothScrollToPositionFromTop (int position, int
offset)

平滑滚动到指定的适配器位置。 指定位置的视图会滚动到相对顶边偏移 offset 像素的位置显示。
如果无法做到(比如该偏移量会使首尾条目超越列表边缘),会滚动到尽量接近的位置。

参数

position 滚动到的位置

offset 滚动结束时,指定 position 条目距离视图顶部的像素数

当offset=0时,可以把position位置的item置顶,而且带有滑动效果,即会从原来位置轻轻滑动到最顶

端位置。

测试:
可以顺利滚动,返回滚动也很顺利,滑动顺畅

4、public void
smoothScrollToPositionFromTop(int position)

参数:

position 滚动到的位置

带有滑动效果的滚动到指定位置。

如何判断其内容已滚动到最顶部或者最底部看

getListView().setOnScrollListener(new OnScrollListener() {
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
}

@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
if(firstVisibleItem==0){
Log.e("log", "滑到顶部");
}
if(visibleItemCount+firstVisibleItem==totalItemCount){
Log.e("log", "滑到底部");
}
}
});

平滑的滚动listview到一个指定位

package com.android.contacts.widget;

import android.content.Context;

import android.util.AttributeSet;

import android.widget.ListView;

public class AutoScrollListView extends ListView {

private static final
float PREFERRED_SELECTION_OFFSET_FROM_TOP = 0.33f;

private int
mRequestedScrollPosition = -1;

private boolean
mSmoothScrollRequested;

public
AutoScrollListView(Context context) {

super(context);

}

public
AutoScrollListView(Context context, AttributeSet attrs) {

super(context, attrs);

}

public
AutoScrollListView(Context context, AttributeSet attrs, int
defStyle) {

super(context, attrs, defStyle);

}

public void
requestPositionToScreen(int position, boolean smoothScroll) {

mRequestedScrollPosition = position;

mSmoothScrollRequested = smoothScroll;

requestLayout();

}

@Override

protected void
layoutChildren() {

super.layoutChildren();

if (mRequestedScrollPosition == -1) {

return;

}

final int position =
mRequestedScrollPosition;

mRequestedScrollPosition = -1;

int firstPosition = getFirstVisiblePosition() +
1;

int lastPosition =
getLastVisiblePosition();

if (position >= firstPosition &&
position <= lastPosition) {

return; //
Already on screen

}

final int offset = (int) (getHeight() *
PREFERRED_SELECTION_OFFSET_FROM_TOP);

if (!mSmoothScrollRequested) {

setSelectionFromTop(position, offset);

// Since
we have changed the scrolling position, we need to redo child
layout

// Calling
"requestLayout" in the middle of a layout pass has no effect,

// so we
call layoutChildren explicitly

super.layoutChildren();

} else {

// We will
first position the list a couple of screens before or after

// the new
selection and then scroll smoothly to it.

int
twoScreens = (lastPosition - firstPosition) * 2;

int
preliminaryPosition;

if
(position < firstPosition) {

preliminaryPosition = position + twoScreens;

if (preliminaryPosition >=
getCount()) {

preliminaryPosition = getCount() - 1;

}

if (preliminaryPosition <
firstPosition) {

setSelection(preliminaryPosition);

super.layoutChildren();

}

} else
{

preliminaryPosition =
position - twoScreens;

if (preliminaryPosition <
0) {

preliminaryPosition = 0;

}

if
(preliminaryPosition > lastPosition) {

setSelection(preliminaryPosition);

super.layoutChildren();

}

}

smoothScrollToPositionFromTop(position, offset);

}

}

}

② android中怎样实现手指向上滑动顶部导航栏从透明变成不透明的

(id)initWithRootViewController:(UIViewController *)rootViewController
{
if (self = [super initWithRootViewController:rootViewController]) {
self.navigationBar.translucent = YES;
}
return self;
}
色调颜色
在我的 UIApplicationDelegate 的子类,我设置导航栏中的色调颜色。我发现色调颜色的 alpha 没有区别。也就是说,使用 alpha 0.1 不会导致要变得更透亮的栏。
(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
[[UINavigationBar appearance] setTintColor:[UIColor greenColor]];
}
边缘
在我的内容视图控制器中,我将设置边缘为 UIRectEdgeNone 这样顶部的导航栏不会砍。如果要使用默认的 UIRectEdgeAll ,导航栏将会永久地盖顶部的我的内容。即使我要住在一起这种异常, UIRectEdgeAll 仍然不会启用半透明效果。
(void) viewDidLoad
{
[super viewDidLoad];
self.edgesForExtendedLayout = UIRectEdgeNone;
}
编辑: 试验与边缘
@rmaddy 在评论中所指出的广告问题可能与 edgesForExtendedLayout。我发现综合教程 edgesForExtendedLayout ,并试图实现它:

(void) viewDidLoad
{
[super viewDidLoad];

self.edgesForExtendedLayout = UIRectEdgeAll;
self. = YES;
self. = NO;
}
它不工作。首先,那里是没有半透明效果。第二,我的内容的顶部被切掉。在上面的代码与以下示例页上,神通最初由导航栏和它是很难向滚动。你可以拉下,看到顶部的化身,但当你放开,页面会自动弹起来,神通将会再次被遮掩。

解决方法 1:
问题是由第三方拉下来刷新视图EGORefreshTableHeaderView,而普遍地使用了之前的 iOS 6 介绍系统刷新控制引起的。

这种观点混淆了 iOS 7,让它认为内容是比真的很高。Ios 6 和
7,我已经有条件地切换到使用UIRefreshControl。现在的导航栏不会砍掉我的内容。我可以使用 UIRectEdgeAll
,使我下面的导航栏的内容走。最后,显示我的导航栏与较低的 α 要获得半透明效果色调图。
// mostly rendant calls, because they're all default
self.edgesForExtendedLayout = UIRectEdgeAll;
self. = YES;
self. = NO;

[[UINavigationBar appearance] setTintColor:[UIColor colorWithWhite:0.0 alpha:0.5]];

③ Android 滑动菜单(slide menu) 背景 亮度和透明度设置

首先在sdk目录下source源码目录下搜索DrawerLayout文件,把相关的java文件导入工程

以5.0为例

@Override
protectedbooleandrawChild(Canvascanvas,Viewchild,longdrawingTime){
finalintheight=getHeight();
finalbooleandrawingContent=isContentView(child);
intclipLeft=0,clipRight=getWidth();

finalintrestoreCount=canvas.save();
if(drawingContent){
finalintchildCount=getChildCount();
for(inti=0;i<childCount;i++){
finalViewv=getChildAt(i);
if(v==child||v.getVisibility()!=VISIBLE||
!hasOpaqueBackground(v)||!isDrawerView(v)||
v.getHeight()<height){
continue;
}

if((v,Gravity.LEFT)){
finalintvright=v.getRight();
if(vright>clipLeft)clipLeft=vright;
}else{
finalintvleft=v.getLeft();
if(vleft<clipRight)clipRight=vleft;
}
}
canvas.clipRect(clipLeft,0,clipRight,getHeight());
}
finalbooleanresult=super.drawChild(canvas,child,drawingTime);
canvas.restoreToCount(restoreCount);

if(mScrimOpacity>0&&drawingContent){

/*
*这里是直接用画笔画了一层有透明度的方块覆盖在主内容上方,产生慢*慢变暗的效果,所以我们只需要在这里修改即可,
*根据代码逻辑可以知道我们只需要改变imag即可
*/
finalintbaseAlpha=(mScrimColor&0xff000000)>>>24;
finalintimag=(int)(baseAlpha*mScrimOpacity);
finalintcolor=imag<<24|(mScrimColor&0xffffff);
mScrimPaint.setColor(color);

canvas.drawRect(clipLeft,0,clipRight,getHeight(),mScrimPaint);
}elseif(mShadowLeft!=null&&(child,Gravity.LEFT)){
finalintshadowWidth=mShadowLeft.getIntrinsicWidth();
finalintchildRight=child.getRight();
finalintdrawerPeekDistance=mLeftDragger.getEdgeSize();
finalfloatalpha=
Math.max(0,Math.min((float)childRight/drawerPeekDistance,1.f));
//这里是绘制菜单的覆盖物
mShadowLeft.setBounds(childRight,child.getTop(),
childRight+shadowWidth,child.getBottom());
mShadowLeft.setAlpha((int)(0xff*alpha));
mShadowLeft.draw(canvas);
}elseif(mShadowRight!=null&&(child,Gravity.RIGHT)){
finalintshadowWidth=mShadowRight.getIntrinsicWidth();
finalintchildLeft=child.getLeft();
finalintshowing=getWidth()-childLeft;
finalintdrawerPeekDistance=mRightDragger.getEdgeSize();
finalfloatalpha=
Math.max(0,Math.min((float)showing/drawerPeekDistance,1.f));
mShadowRight.setBounds(childLeft-shadowWidth,child.getTop(),
childLeft,child.getBottom());
mShadowRight.setAlpha((int)(0xff*alpha));
mShadowRight.draw(canvas);
}
returnresult;
}


改变代码之后保存

这时候在布局文件中就不要使用android-supportv4包下的DrawerLayout的,改成你工程里修改后的DrawerLayout,运行就达到效果了

④ android开发中,底部菜单栏固定不动,上方的内容可以实现上下滑动,该如何实现

我也 搞了这 线性布局改为相对布局就可以了 android:layout_alignParentBottom="true"

⑤ android中怎么实现菜单栏的分屏滑动

1、BIOS下修改选项(以H61为例,H81/Q87等其他芯片组BIOS界面基本一致); 开机按F1进入bios选择Devices; 将Select Active Video更改为IDG(集显优先),该选项默认为AUTO(自动),然后将Multi-Monitor Support(多显示支持)修改为Enabled;F10保存后重启; 2、显示器接集成显卡输出口,先在系统下卸载独立显卡驱动,然后依次安装集成显卡驱动和独立显卡驱动。 安装完设备显示状态; 3、操作方法: a、若Win7&Win8等系统,直接按win+p切换成扩展模式; b、若Win xp系统,需要在显卡控制台中进行设置; c、集成显卡和独立显卡分别连接的显示器,只能实现扩展模式,若集成显卡连接的两个显示器,或是独立显卡连接的两个显示器可以实现复制和扩展; 备注: 1、Win7&Win8系统下,Win+P即可实现双屏; 2、修改BIOS参数之后,需要先卸载独立显卡驱动后安装集成-独立两个驱动; 3、此方案只能支持扩展不能实现复制功能。

⑥ android中怎么使我自定义的导航栏随着最顶部的状态栏滑动隐藏呢

if (enable) { //显示状态栏 WindowManager.LayoutParams lp = getWindow().getAttributes(); lp.flags = WindowManager.LayoutParams.FLAG_FULLSCREEN; getWindow().setAttributes(lp); getWindow().addFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);

阅读全文

与android顶部滑动菜单相关的资料

热点内容
有pdf却打不开 浏览:460
七星彩软件app怎么下载 浏览:217
32单片机的重映射哪里改 浏览:816
为什么前端不用刷算法题 浏览:708
对称加密系统和公钥加密系统 浏览:428
历史地理pdf 浏览:606
物联网云服务器框架 浏览:648
sybaseisql命令 浏览:183
android权威编程指南pdf 浏览:663
哪些软件属于加密软件 浏览:646
文件夹75丝什么意思 浏览:470
最便宜sop8单片机 浏览:966
图解周易预测学pdf 浏览:420
c盘莫名奇妙多了几个文件夹 浏览:171
贵州花溪门票优惠app哪个好 浏览:803
如何说话不会让人有被命令的感觉 浏览:440
哪里可下载湘工惠app 浏览:265
福特python 浏览:312
pdf转换成word表格 浏览:353
无线远端服务器无响应是什么意思 浏览:672