English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
utilizzare l'interfaccia OnTouchListener di View per ascoltare lo scorrimento della listView, confrontando le coordinate dell'ultima volta per determinare la direzione di scorrimento e determinare se è necessario visualizzare o nascondere la布局 corrispondente, con effetti animati.
1. Visualizzazione e nascondimento automatico della Toolbar
prima di tutto aggiungere un HeaderView alla listView per evitare che il primo elemento venga oscurato dalla Toolbar.
View header=new View(this); header.setLayoutParams(new AbsListView.LayoutParams( AbsListView.LayoutParams.MATCH_PARENT, (int)getResources().getDimension(R.dimen.abc_action_bar_default_height_material))); mListView.addHeaderView(header);
//R.dimen.abc_action_bar_default_height_material è l'altezza del sistema ActionBar
definire una variabile mTouchSlop per ottenere la distanza minima di scorrimento riconosciuta dal sistema
mTouchSlop=ViewConfiguration.get(this).getScaledTouchSlop(); // la distanza minima di scorrimento riconosciuta dal sistema
giudicare l'evento di scorrimento
bbsListView.setOnTouchListener(new OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { switch (event.getAction()) { case MotionEvent.ACTION_DOWN: mFirstY=event.getY(); break; case MotionEvent.ACTION_MOVE: mCurrentY=event.getY(); if(mCurrentY-mFirstY>mTouchSlop) direction=0; //Scorrimento verticale della listView verso il basso else if(mFirstY-mCurrentY>mTouchSlop) direction=1; //Scorrimento verticale della listView verso l'alto if(direction==1) { if(mShow) { toolbarAnim(1); //Nasconde la vista superiore mShow=!mShow; } } else if(direction==0) { if(!mShow) { toolbarAnim(0); //Mostra la vista superiore mShow=!mShow; } } case MotionEvent.ACTION_UP: break; } return false; } }); }
animazione delle proprietà
protected void toolbarAnim(int flag) { if(set!=null && set.isRunning()) { set.cancel(); } if(flag==0) { mAnimator1=ObjectAnimator.ofFloat(mToolbar, "translationY", linearView.getTranslationY(),0); mAnimator2=ObjectAnimator.ofFloat(mToolbar, "alpha", 0f,1f); } else if(flag==1) { mAnimator1=ObjectAnimator.ofFloat(mToolbar, "translationY", linearView.getTranslationY(),-linearView.getHeight()); mAnimator2=ObjectAnimator.ofFloat(mToolbar, "alpha", 1f,0f); } set=new AnimatorSet(); set.playTogether(mAnimator1,mAnimator2); set.start(); }
//Sopra ci sono animazioni di transizione e trasparenza
Utilizzando il tema NoActionBar, altrimenti può causare conflitti. Inoltre, includi la compilazione
dependencies{ compile fileTree(include:['*.jar'],dir:'libs') compile 'com.android.support:appcompat-v7:21.0.3' }
2. Quando il componente da nascondere e mostrare non è toolbar, ma il nostro layout personalizzato myView, ci sono alcuni punti da notare,
(1) Il layout deve utilizzare il layout relativo, in modo che il nostro layout personalizzato possa fluttuare sopra il listView.
(2) Per evitare che il primo Item venga oscurato da myView, aggiungi un HeaderView al listView. In questo caso è necessario misurare l'altezza di myView, è necessario utilizzare il seguente metodo per postare il task sulla UI thread, altrimenti l'esecuzione potrebbe fallire.
final View header=new View(this); //Aggiungi un headView al listView per evitare che il primo item venga oscurato header.post(new Runnable() { public void run() { header.setLayoutParams(new AbsListView.LayoutParams(AbsListView.LayoutParams.MATCH_PARENT, myView.getHeight())); } });
Altri sono come toolbar
Questo è tutto il contenuto dell'articolo, speriamo che sia utile per la tua apprendimento e che tu sostenga fortemente il tutorial di urlania.
Dichiarazione: il contenuto di questo articolo è stato tratto da Internet, il copyright spetta ai rispettivi autori, il contenuto è stato contribuito e caricato autonomamente dagli utenti di Internet, questo sito non detiene i diritti di proprietà, non è stato editato manualmente e non assume alcuna responsabilità legale correlata. Se trovi contenuti sospetti di violazione del copyright, ti preghiamo di inviare una e-mail a: notice#oldtoolbag.com (al momento dell'invio dell'e-mail, sostituisci # con @) per segnalare il problema e fornire prove pertinenti. Una volta verificata, questo sito rimuoverà immediatamente il contenuto sospetto di violazione del copyright.