English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Realizzazione di listView magico per la visualizzazione automatica e nascita della layout Android

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.

Ti potrebbe interessare