導航:首頁 > 操作系統 > 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頂部滑動菜單相關的資料

熱點內容
excel表格單列數據加密 瀏覽:646
給同事的解壓話語 瀏覽:990
linux關閉網卡命令行 瀏覽:452
史上最漂亮程序員 瀏覽:768
java實現excel的導入 瀏覽:758
光遇賬號如何轉移安卓 瀏覽:266
5分之13除以26的演算法 瀏覽:342
蘭州安寧區買解壓包子 瀏覽:641
php接收圖片代碼 瀏覽:668
hci命令 瀏覽:662
福建伺服器大區雲空間 瀏覽:840
筆桿子程序員 瀏覽:745
手機軟體易驗證加密 瀏覽:589
文檔加密只讀模式也不能看到 瀏覽:431
把jpg轉換成pdf的軟體 瀏覽:874
linuxeth0mac 瀏覽:192
windows編程知乎 瀏覽:442
壓縮工期超過40 瀏覽:249
Android怎麼優化內存 瀏覽:106
linuxetcsysconfig 瀏覽:396