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

Implementação de função de atualização de arrasto no dispositivo móvel Android

Primeira parte: quatro eventos touch

  1.touchstart: Quando o dedo é colocado na tela (independentemente de quantos), é acionado o evento touchstart.

  2.touchmove: Quando deslizamos o dedo na tela, este evento é acionado continuamente. Se não desejarmos que a página se mova, podemos usar event.preventDefault para impedir este comportamento padrão.

  3.touchend: Quando o dedo sai da tela após o deslize, é acionado o evento touchend.

  4.touchcancel: O sistema aciona este evento quando para de rastrear o toque. Por exemplo, se um alert() for acionado durante o toque, este evento será acionado, e este evento é usado raramente.

Segunda parte: quatro objetos touch

   1. touches, é um objeto de array-like, que contém todas as informações dos dedos, se houver apenas um dedo, então usamos touches[0] para representá-lo.

   2. targetTouches: As informações do dedo no área de destino.

     3. changedTouches: As informações do dedo que acionaram o evento recentemente.

     4. touchend: Quando o sistema para de rastrear o toque, as informações de touches e targetTouches são excluídas, e as informações armazenadas em changedTouches são as últimas, que são melhores usadas para calcular as informações do dedo.

Terceira parte: exemplo1

  Primeiro, veja o efeito gráfico:

  A implementação é muito simples, é só definir a propriedade de posição do círculo vermelho como absolute, e então, quando nos movemos nele, aciona o evento touchmove, definindo Left e top como pageX e pageY do evento, para garantir que o ponto de ativação esteja no mesmo local que o centro do círculo, basta adicionar metade da largura a pageX e metade da altura a pageY.

  Código-fonte a seguir:

<!DOCTYPE html>
<html>
<cabeçalho>
 <title>touchExample</título>
 <meta name="viewport" content="largura=device-largura, usuário-escalável=não, inicial-escala=1.0, mínimo-escala=1.0, máximo-escala=1.0">
 <script type="text/javascript" src="http://code.jquery.com/jquery-latest.js"></script> 
 <estilo>
  #touchDiv{
   posição: absoluto;
   largura: 50px;
   altura: 50px;
   topo: 20px;
   esquerda: 20px;
   texto-alinhamento: centro;
   linha-altura: 50px;
   cor: branco;
   borda-raio: 50%;
   fundo-cor: vermelho;
  }
 </style>
</head>
<body>
 <div id="touchDiv">Clique em mim</div>
 <script>
  var touchDiv = document.getElementById("touchDiv");
  var x,y;
  touchDiv.addEventListener("touchstart",podeArrastar);
  touchDiv.addEventListener("touchmove",arrastar);
  touchDiv.addEventListener("touchend",nodrag);
  function podeArrastar (e) {
   console.log("god começou");
  }
  function arrastar (e) {
   $("#touchDiv").css("left",e.touches[0].pageX-25);
   $("#touchDiv").css("top",e.touches[0].pageY-25);
  }
  function nodrag () {
   console.log("god terminou");
  }
 </script>
</body>
</html>

 Parte Quarta: Exemplo2

  Este exemplo é a implementação da função Arrastar para Atualizar, efeito conforme abaixo:

Código-fonte a seguir:

<!DOCTYPE html>
<html>
<cabeçalho>
 <título>Arrastar para Atualizar</título>
 <meta name="viewport" content="largura=device-largura, usuário-escalável=não, inicial-escala=1.0, mínimo-escala=1.0, máximo-escala=1.0">
 <estilo>
  *{
   margem:0;
   preenchimento: 0;
   fonte-tamanho:15px;
  }
  .cabeçalho{
   altura: 50px;
   linha-altura: 50px;
   texto-alinhamento: centro;
   fundo-cor: azul;
   cor: branco;
   fonte-tamanho: 23px;
  }
  .arrastar_para_atualizar{
   alinhamento-itens: centro;
   preenchimento-esquerda: 155px;
   fundo-cor: #bbb;
   cor: amarelo;
   exibição: none;
  }
  .atualizar{
   altura: 50px;
   linha-altura: 50px;
   texto-alinhamento: centro;
   fundo-cor: #bbb;
   cor: verde;
   exibição: none;
  }
  .arrastar{
   texto-alinhamento: centro;
   fundo-cor: cinza claro;
   posição: relativa;
   preenchimento:20px;
   texto-espaçamento: 1em;
   linha-altura: 30px;
   fonte-tamanho:18px;
  }
 </style>
</head>
<body>
 <div class="header">Nuvem governamental</div>
 <div class="drag_to_refresh"></div>
 <div class="refresh">Aguarde, atualizando...</div>
 <div class="drag">Governo eletrônico nuvem (E-nuvem governamental) pertence ao governo, combinando as características da tecnologia de nuvem computacional, simplificando, otimizando e integrando as funções de gestão e serviço do governo, e realizando através de meios informatizados a realização de vários processos de negócios e serviços funcionais em serviços governamentais, fornecendo uma plataforma de serviços IT confiável para todos os departamentos governamentais.</div>
<script>
window.onload = function () {
 var initX;
 var drag_content = document.querySelector(".drag");
 var drag_to_refresh = document.querySelector(".drag_to_refresh");
 var refresh = document.querySelector(".refresh");
 drag_content.addEventListener("touchmove",drag);
 drag_content.addEventListener("touchstart",dragStart);
 drag_content.addEventListener("touchend",dragEnd);
 function dragStart(e){
  initY = e.touches[0].pageY;
  console.log(initX);
 }
 function drag (e){
  drag_to_refresh.style.display = "block";
  drag_to_refresh.style.height = (e.touches[0].pageY - initY) + "px";
  console.log(drag_to_refresh.style.height);
  if(parseInt(drag_to_refresh.style.height)>=100){
   // Atenção: pois o valor de height obtido é em unidades px, usamos parseInt para analisar
   drag_to_refresh.style.height = "100px";
   if(parseInt(drag_to_refresh.style.height)>80){
    drag_to_refresh.style.lineHeight = drag_to_refresh.style.height;
    drag_to_refresh.innerHTML = "Solte para atualizar";
   }
  }
 }
 function dragEnd (e){
  if(parseInt(drag_to_refresh.style.height)>80){
   refresh.style.display = "block";
   setTimeout(reload,1000);
  }
  drag_to_refresh.style.display = "none"; 
 }
 function reload () {
  location.reload();
 }
}
</script>
</body>
</html>

O que foi mencionado acima é o que o editor apresentou aos amigos sobre a implementação da função de atualização de arrasto no dispositivo móvel, esperando ajudar a todos. Se você tiver alguma dúvida, por favor, deixe um comentário, o editor responderá a todos a tempo. Agradecemos também o apoio dos amigos ao site de tutorial de clamor!

Declaração: O conteúdo deste artigo é extraído da Internet, pertence ao respectivo proprietário, é contribuído e carregado voluntariamente pelos usuários da Internet, este site não possui direitos de propriedade, não foi editado manualmente e não assume responsabilidade legal relevante. Se você encontrar conteúdo suspeito de violação de direitos autorais, por favor, envie um e-mail para: notice#oldtoolbag.com (ao enviar e-mail, troque # por @ para denunciar e forneça provas relevantes. Caso seja confirmada a infração, o site deletará imediatamente o conteúdo suspeito de violação de direitos autorais.)

Você também pode gostar