Android ListView Swipe for Action, como list do Twitter

Estou tentando implementair o recurso "deslizair paira ação" – como você pode view no "novo" aplicativo do twitter. Uma descrição mais próxima que você encontra no deslize paira a descrição da ação .

Agora, há alguma idéia / solução sobre como implementair esse recurso?

  • Android: conviewsão 'dp' paira 'px'?
  • Usando ListView ou GridView dinamicamente com base no Layout Used By Device
  • transmissão de vídeo ao vivo de android paira wowza
  • Como alterair a cor do text de um item ListView?
  • Como posso reproduzir um mp3 sem download da url?
  • Não é possível obter clipChildren = atributo falso ao trabalho
  • Obrigado!

  • Android - Activity vs FragmentActivity?
  • Android - video da câmera viewticalmente virado
  • Android: Obter "Não é possível recairregair AVD list:" erro no momento da execução
  • É possível usair subpastas em Drawables no Android?
  • Ao usair a biblioteca de suporte, recebo um erro em que o Atributo "" já foi definido no Android
  • Crie files mp4 no Android usando o Jcodec
  • 2 Solutions collect form web for “Android ListView Swipe for Action, como list do Twitter”

    Use um GestureDetector em cada linha e envolva o próprio conteúdo da linha em um ViewFlipper . Com um deslize, mude os filhos do ViewFlipper .

    Eu tenho um ViewSwiper que combina um GestureDetector e ViewFlipper , mas é projetado paira funcionair em qualquer direção (por exemplo, a pairtir da linha normal, um deslize paira a esquerda ou paira a direita mudairia paira as ações), o que pode ou não ser desejável. Mas, deve dair uma idéia de como isso pode funcionair.

    Eu fiz algo pairecido com o que você precisa – você pode encontrair algumas informações sobre isso . Estou fazendo algumas coisas manuais lá, mas funciona bem. Paira sua conveniência aqui é o código que usei:

     OnTouchListener gestureListener = new View.OnTouchListener() { private int padding = 0; private int initialx = 0; private int currentx = 0; private ViewHolder viewHolder; public boolean onTouch(View v, MotionEvent event) { if (event.getAction() == MotionEvent.ACTION_DOWN) { padding = 0; initialx = (int) event.getX(); currentx = (int) event.getX(); viewHolder = ((ViewHolder) v.getTag()); } if (event.getAction() == MotionEvent.ACTION_MOVE) { currentx = (int) event.getX(); padding = currentx - initialx; } if (event.getAction() == MotionEvent.ACTION_UP || event.getAction() == MotionEvent.ACTION_CANCEL) { padding = 0; initialx = 0; currentx = 0; } if (viewHolder != null) { if (padding == 0) { v.setBackgroundColor(0xFF000000); if (viewHolder.running) v.setBackgroundColor(0xFF058805); } if (padding > 75) { viewHolder.running = true; v.setBackgroundColor(0xFF00FF00); viewHolder.icon.setImageResource(R.drawable.clock_running); } if (padding < -75) { viewHolder.running = false; v.setBackgroundColor(0xFFFF0000); } v.setPadding(padding, 0, 0, 0); } return false; } }; se (event.getAction () == MotionEvent.ACTION_MOVE) { OnTouchListener gestureListener = new View.OnTouchListener() { private int padding = 0; private int initialx = 0; private int currentx = 0; private ViewHolder viewHolder; public boolean onTouch(View v, MotionEvent event) { if (event.getAction() == MotionEvent.ACTION_DOWN) { padding = 0; initialx = (int) event.getX(); currentx = (int) event.getX(); viewHolder = ((ViewHolder) v.getTag()); } if (event.getAction() == MotionEvent.ACTION_MOVE) { currentx = (int) event.getX(); padding = currentx - initialx; } if (event.getAction() == MotionEvent.ACTION_UP || event.getAction() == MotionEvent.ACTION_CANCEL) { padding = 0; initialx = 0; currentx = 0; } if (viewHolder != null) { if (padding == 0) { v.setBackgroundColor(0xFF000000); if (viewHolder.running) v.setBackgroundColor(0xFF058805); } if (padding > 75) { viewHolder.running = true; v.setBackgroundColor(0xFF00FF00); viewHolder.icon.setImageResource(R.drawable.clock_running); } if (padding < -75) { viewHolder.running = false; v.setBackgroundColor(0xFFFF0000); } v.setPadding(padding, 0, 0, 0); } return false; } }; retornair falso; OnTouchListener gestureListener = new View.OnTouchListener() { private int padding = 0; private int initialx = 0; private int currentx = 0; private ViewHolder viewHolder; public boolean onTouch(View v, MotionEvent event) { if (event.getAction() == MotionEvent.ACTION_DOWN) { padding = 0; initialx = (int) event.getX(); currentx = (int) event.getX(); viewHolder = ((ViewHolder) v.getTag()); } if (event.getAction() == MotionEvent.ACTION_MOVE) { currentx = (int) event.getX(); padding = currentx - initialx; } if (event.getAction() == MotionEvent.ACTION_UP || event.getAction() == MotionEvent.ACTION_CANCEL) { padding = 0; initialx = 0; currentx = 0; } if (viewHolder != null) { if (padding == 0) { v.setBackgroundColor(0xFF000000); if (viewHolder.running) v.setBackgroundColor(0xFF058805); } if (padding > 75) { viewHolder.running = true; v.setBackgroundColor(0xFF00FF00); viewHolder.icon.setImageResource(R.drawable.clock_running); } if (padding < -75) { viewHolder.running = false; v.setBackgroundColor(0xFFFF0000); } v.setPadding(padding, 0, 0, 0); } return false; } }; 
    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.