2017-10-31 3 views
0

현재 전화가 완료되면 HTTP 요청을하는 동안 회 전자를 표시하려고합니다. 몇 가지 다른 스피너를 만들었지 만 호출이 시작될 때마다 애니메이션이 모두 중단됩니다.HTTP 요청 (Appcelerator)을 만드는 동안 회 전자를 표시하는 방법

var spinnerArray = []; 
for (var i = 0; i < 20; i++) { 
    spinnerArray.push('/images/preloaderGif/preloader'+ ("0" + i).slice(-2) + '.gif'); 
} 
$.spinner.images = spinnerArray; 
$.spinner.duration = "200"; 
$.spinner.repeatCount = "0"; 

spin(); 

function spin(){ 
    $.spinner.start(); 
    callHTTP() //Prewritten function 
    Ti.App.addEventListener('callEnd', function(e){ 
     $.spinner.stop(); 
    }); 
} 

이렇게하면 회 전자가 나타나지 않습니다. 전화를 걸거나 제한 시간 내에 중첩하면 회 전자가 무한대로 회전하거나 제한 시간이 끝날 때까지 회전합니다.

회 전자가 통화를 계속 진행할 수있는 방법이 있습니까?

답변

2

실제로 표시기를 표시하는 데 훨씬 편한 &가 있습니다. 아래 단계 만 따르십시오.

  1. 다운로드 Loading Indicator Widget &이 APP-> 위젯 폴더에 프로젝트에 추가이 위젯. 위젯 폴더가 없으면 만듭니다. 의 스크린 샷 아래와 같이

  2. dependencies 사전 내에서 APP-> config.json 파일에이 줄 "nl.fokkezb.loading" : "*"을 추가합니다. enter image description here

  3. 당신은 HTTP 요청을 호출 제대로하면서/숨기기 표시기를 표시하려면이 코드를 사용할 수 있습니다,

마지막으로 파일 당신의 alloy.js이 라인 Alloy.Globals.loading = Alloy.createWidget("nl.fokkezb.loading");를 추가합니다.

function callHTTP() { 
    if (!Ti.Network.online) { 
     return; 
    } 

    Alloy.Globals.loading.show(); 

    var xhr = Ti.Network.createHTTPClient({ 
     onerror : function(e) { 
      Alloy.Globals.loading.hide(); 

     }, 

     onload : function(e) { 
      Alloy.Globals.loading.hide(); 

      // run your additional code here 
     }, 
    }); 

    xhr.open("GET", url); 
    xhr.send(); 
} 


callHTTP(); 

이 위젯을 사용하면 다른 프로젝트에 길고 오류가 발생하기 쉬운 코드를 작성할 필요가 없습니다. 그냥이 위젯을 추가 & 당신은/코드를 단지 2 라인으로 로딩 표시기를 표시/숨길 수 있습니다.

XHR 오류/성공 HTTP 요청이 완료 될 때 확신 할 수 없으므로 코드를 작성하여 표시기를 숨길 수있는 유일한 장소는 콜백입니다.

당신은 ActivityIndicator 사용할 수
관련 문제