Android的/ Java的 - 删除连续加载动画延迟 [英] Android / Java - Removing Sequential Loading Animation Delay

查看:286
本文介绍了Android的/ Java的 - 删除连续加载动画延迟的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个机器人动画,它加载了一系列连续的点(publishProgress),但是有一个10+秒的延时才开始,因为我让他们为我的AsyncTask的一部分,它加载一旦数据被处理(技术上 - 的两者要相关 - 但它在视觉上造成那里会有延迟)我怎么能叫这个动画上课的时候​​第一次启动呢?我需要删除该视觉动画延迟。

来源:

 公共类UpdateActivity扩展活动实现OnClickListener {

    私人TelephonyManager TM;

    AlertDialog mConfirmAlert = NULL;
    NetworkTask任务;
    ImageView的图片,文字,
    AlertDialog mErrorAlert = NULL;
    公共静态的ArrayList<字符串> NameArr =新的ArrayList<字符串>();
    公共静态的ArrayList<字符串> ValueArr =新的ArrayList<字符串>();
    公共静态的ArrayList<字符串> nameArr =新的ArrayList<字符串>();
    公共静态的ArrayList<字符串> ApnArr =新的ArrayList<字符串>();
    公共静态的ArrayList<字符串> mmscArr =新的ArrayList<字符串>();
    公共静态的ArrayList<字符串> mmsportArr =新的ArrayList<字符串>();
    公共静态的ArrayList<字符串> mmsproxyArr =新的ArrayList<字符串>();
    公共静态的ArrayList<字符串> portArr =新的ArrayList<字符串>();
    公共静态的ArrayList<字符串> proxyArr =新的ArrayList<字符串>();
    私人ImageView的mProgressImageview1;
    私人ImageView的mProgressImageview2;
    私人ImageView的mProgressImageview3;
    私人ImageView的mProgressImageview4;
    私人ImageView的mProgressImageview5;
    私人按钮mUpdateButton = NULL;
    私人按钮mAssistUpdateButton = NULL;
    私人按钮mAssistInstrButton = NULL;
    私人TextView的mReadAgainButton = NULL;
    公共静态诠释计数;
    公共AnimationDrawable mTextAnimation = NULL;
    私人按钮assist_update_btn = NULL;
    TextView的mUpdatetext;
    公共静态的InputStream流= NULL;
    INT版本;
    公共静态的BigInteger ID1,ID2,mdN1,mdN2;
    BigInteger的[]号,mdnId;
    公共静态字符串ICCID,MDN;
    私人诠释mInstructionNumber = 0;
    公共静态字符串的车,结果;
    私有静态最后弦乐LOG_TAG =DataSettings;

    公共静态最后弦乐BASE_URL =htt​​ps://apps.example.com/REST/phoneSettings;

    公共静态XmlParserHandlerFinal处理程序;
    公共静态INT TotalSteps = 8;

    公众的FileInputStream FIS;

    @覆盖
    保护无效的onCreate(包savedInstanceState){
        super.onCreate(savedInstanceState);
        //实例XML解析器类
        处理器=新XmlParserHandlerFinal();
        handler.setContext(this.getBaseContext());
        TM =(TelephonyManager)getSystemService(TELEPHONY_SERVICE);
        INT NETWORKTYPE = tm.getNetworkType();
        INT phoneType = tm.getPhoneType();
        版本= android.os.Build.VERSION.SDK_INT;
        //获取MDN(MCC + MNC)SIM卡和ICCID的供应商(串行
        SIM卡的//数)
        //并检查为载体类型
        getImpVariablesForQuery();
        任务=新NetworkTask();
        如果(phoneType == TelephonyManager.PHONE_TYPE_CDMA
                || (phoneType!= TelephonyManager.PHONE_TYPE_GSM
                        &功放;&安培; NETWORKTYPE!= TelephonyManager.NETWORK_TYPE_GPRS
                        &功放;&安培; NETWORKTYPE!= TelephonyManager.NETWORK_TYPE_EDGE
                        &功放;&安培; NETWORKTYPE!= TelephonyManager.NETWORK_TYPE_HSDPA
                        &功放;&安培; NETWORKTYPE!= TelephonyManager.NETWORK_TYPE_HSPA
                        &功放;&安培; NETWORKTYPE!= TelephonyManager.NETWORK_TYPE_HSPAP
                        &功放;&安培; NETWORKTYPE!= TelephonyManager.NETWORK_TYPE_HSUPA
                        &功放;&安培; NETWORKTYPE = TelephonyManager.NETWORK_TYPE_UMTS和放大器;!&安培; NETWORKTYPE!= TelephonyManager.NETWORK_TYPE_LTE)){
            //如果手机类型为CDMA或
            //电话手机类型不是GSM和网络类型是没有
            //网络类型在声明中表示
            //显示不兼容性消息
            showAlert(的getString(R.string.incomp_sm_dialog));
            //网络类型看,因为一些药片没有手机类型。
            //我们依靠在这种情况下,网络类型
        }否则,如果(!(tm.getSimState()== TelephonyManager.SIM_STATE_ABSENT
                || (tm.getSimOperator())
                        .equals(的getString(R.string.numeric_tmo))|| (TM
                    .getSimOperator())。等于(的getString(R.string.numeric_att)))){
            //如果SIM卡是present,不是T-Mo或ATT网络SIM卡,
            //显示错误信息提示,指示使用SM SIM卡
            showAlert(的getString(R.string.insert_sm_dialog));
        } //没有SIM卡或SIM卡与T-MO&放大器; ATT MNC MCC present
        否则,如果((tm.getSimOperator())。等于(的getString(R.string.numeric_tmo))
                || (tm.getSimOperator())
                        .equals(的getString(R.string.numeric_att))){
            //设备有T-Mo或ATT网络的SIM卡MCC和MNC正确
            //人口
            TotalSteps = 6;
            的setContentView(R.layout.updating);

            // AsyncTask的调用Web服务
            任务=新NetworkTask();
            task.execute();
        }
    }

    公共无效的onClick(视图v){
        如果(V == mUpdateButton){
            //被选为版本比ICS更低更新按钮

            onClickMethod(五);

            意图I =新的意图(这一点,ConfigFinalActivity.class);
            startActivity(ⅰ);
            完();
        } 其他

        如果(v.getId()== R.id.assist_update_btn){

            //被选为ICS及以上更新按钮
            //获取协助更新UI TextView的
            TextView的电视=(TextView中)findViewById(R.id.apn_app_text_cta2);
            字符串文本=;
            CharSequence中的StyledText =文本;
            开关(mInstructionNumber){
            情况下0:
                //获得对应的指令串资源
                //第二个指令集
                文=的String.Format(的getString(R.string.apn_app_text_instr)
                        TotalSteps);
                的StyledText = Html.fromHtml(文本);
                //更新与正确的指令集的TextView的
                tv.setText(的StyledText);
                所以正确的指令//增量指令号
                //串资源可以是检索下一时间的更新
                //按钮是pressed
                mInstructionNumber ++;
                打破;
            情况1:
                文=的getString(R.string.apn_app_text_instr2);
                的StyledText = Html.fromHtml(文本);
                tv.setText(的StyledText);
                所以正确的指令//增量指令号
                //串资源可以是检索下一时间的更新
                //按钮是pressed
                mInstructionNumber ++;
                打破;
            案例2:
                //决胜盘说明,更改为相应的布局

                的setContentView(R.layout.assist_instructions);
                字符串assistUpdateInstr =的String.Format(
                        的getString(R.string.apn_app_text_instr3),TotalSteps);
                的StyledText = Html.fromHtml(assistUpdateInstr);
                TextView的assistInstrText =(TextView中)findViewById(R.id.updated_text);
                assistInstrText.setText(的StyledText);
                mAssistInstrButton =(按钮)findViewById(R.id.assist_instr_btn);
                mReadAgainButton =(TextView中)findViewById(R.id.read_again_btn);
                mAssistInstrButton.setOnClickListener(本);
                mReadAgainButton.setOnClickListener(本);
            }
        }否则,如果(V == mAssistInstrButton){
            //LET'S做到这一点按钮,在最后指示屏幕ICS和
            //中选择了
            //创建ConfigActivity意向
            意图I =新的意图(这一点,ConfigFinalActivity.class);
            //调用ConfigActivity意图,开始协助更新
            startActivity(ⅰ);
            startActivity(新意图(Settings.ACTION_APN_SETTINGS));

        }否则,如果(V == mReadAgainButton){
            //返回指令1套,如果选择再次读取
            mInstructionNumber = 0;
            的setContentView(R.layout.assist_update);
            字符串assistUpdate =的getString(R.string.apn_app_text_cta2);
            CharSequence中的StyledText = Html.fromHtml(assistUpdate);
            TextView的assistText =(TextView中)findViewById(R.id.apn_app_text_cta2);
            assistText.setText(的StyledText);
            mAssistUpdateButton =(按钮)findViewById(R.id.assist_update_btn);
            mAssistUpdateButton.setOnClickListener(本);
        }
    }

    公共无效onClickMethod(视图v){
        mUpdateButton =(按钮)findViewById(R.drawable.btn_update_active_hdpi);

    }

    私人无效showAlert(字符串消息){
        AlertDialog.Builder建设者=新AlertDialog.Builder(本);
        builder.setMessage(消息).setPositiveButton(OK,
                新DialogInterface.OnClickListener(){
                    公共无效的onClick(DialogInterface对话框,INT ID){
                        UpdateActivity.this.finish();
                    }
                });
        mConfirmAlert = builder.create();
        mConfirmAlert.show();
    }


    私人无效getImpVariablesForQuery(){

        长D = 1234;
        BigInteger的除数= BigInteger.valueOf(D);
        //获取MDN
    // MDN = tm.getLine1Number();
        MDN =3055861092;
        如果(MDN.equals()){
            mdN1 = NULL;
            mdN2 = NULL;
        } 其他 {

            Log.d(MDN,MDN);
            BigInteger的宾特=新的BigInteger(MDN);
            mdnId = bInt.divideAndRemainder(除数);
            //检索SIM卡的ICCID数
            mdN1 = mdnId [1];
            的System.out.println(MDN%1234 =+ mdN1);
            mdN2 = mdnId [0];
            的System.out.println(MDN / 1234 =+ mdN2);

        }
        ICCID = tm.getSimSerialNumber();
        如果(ICCID.equals()){
            ID1 = NULL;
            ID2 = NULL;
        } 其他 {
            Log.d(ICCID,ICCID);

            BigInteger的bInteger =新的BigInteger(ICCID);
            ID = bInteger.divideAndRemainder(除数);
            ID1 = ID [1];
            的System.out.println(ICCID%1234 =+ ID1);
            ID2 = ID [0];
            的System.out.println(ICCID / 1234 =+ ID2);
        }
        //检查为载体类型
        如果((tm.getSimOperator())。等于(的getString(R.string.numeric_tmo))){
            轿车=TMO;
        }否则,如果((tm.getSimOperator())
                .equals(的getString(R.string.numeric_att))){
            轿车=ATT;
        }

    }

    //方法来保存从解析器的ArrayList
    公共静态无效setArrayList(){
        nameArr = handler.getnameArr();
        ApnArr = handler.getApnArr();
        mmscArr = handler.getMMSCArr();
        mmsproxyArr = handler.getMmscProxyArr();
        mmsportArr = handler.getMmsPortArr();
        proxyArr = handler.getProxyArr();
        portArr = handler.getPortArr();
        数= handler.getCount();
        结果= handler.getResult();

    }



    公众的ArrayList<字符串> getnameArr(){

        返回nameArr;
    }

    公众的ArrayList<字符串> getApnArr(){

        返回ApnArr;
    }

    公众的ArrayList<字符串> getMMSCArr(){

        返回mmscArr;
    }

    公众的ArrayList<字符串> getMmscProxyArr(){

        返回mmsproxyArr;
    }

    公众的ArrayList<字符串> getMmsPortArr(){

        返回mmsportArr;
    }

    公众诠释getCount将(){
        返回计数;
    }

    公众的ArrayList<字符串> getProxyArr(){

        返回proxyArr;
    }

    公众的ArrayList<字符串> getPortArr(){

        返回portArr;
    }

    // AsyncTask的调用Web服务
    公共类NetworkTask扩展的AsyncTask<字符串,整数,为InputStream> {

        @覆盖
        在preExecute保护无效(){
            super.on preExecute();
            //
        }

        @覆盖
        受保护的InputStream doInBackground(字符串... PARAMS){
            INT结果为0;

            {
                Log.i(网址...,BASE_URL);

                尝试 {
                    流= getQueryResults(BASE_URL);
                }赶上(SocketTimeoutException如果E1){
                    // TODO自动生成的catch块
                    e1.printStackTrace();
                }赶上(异常SSLException E1){
                    // TODO自动生成的catch块
                    e1.printStackTrace();
                }赶上(IOException异常E1){
                    // TODO自动生成的catch块
                    e1.printStackTrace();
                }赶上(的SAXException E1){
                    // TODO自动生成的catch块
                    e1.printStackTrace();
                }赶上(例外E1){
                    // TODO自动生成的catch块
                    e1.printStackTrace();
                }
                //将code以下起着ST促销动画
                显示更新成功或失败消息//之前
                为(中间体增量= 0;增量2;增量++){
                    //睡眠1/2秒
                    //调用UI改变更新文字显示1点
                    //并增加水平,减少限幅的量
                    // 和
                    //慢慢揭示的手图像
                    publishProgress(R.drawable.loading_full,
                            R.drawable.loading_empty,R.drawable.loading_empty,
                            R.drawable.loading_empty,R.drawable.loading_empty);
                    尝试 {
                        视频下载(500);
                    }赶上(InterruptedException异常E){
                        // TODO自动生成的catch块

                    }
                    publishProgress(R.drawable.loading_full,
                            R.drawable.loading_full,R.drawable.loading_empty,
                            R.drawable.loading_empty,R.drawable.loading_empty);
                    尝试 {
                        视频下载(500);
                    }赶上(InterruptedException异常E){
                        // TODO自动生成的catch块

                    }
                    publishProgress(R.drawable.loading_full,
                            R.drawable.loading_full,R.drawable.loading_full,
                            R.drawable.loading_empty,R.drawable.loading_empty);
                    尝试 {
                        视频下载(500);
                    }赶上(InterruptedException异常E){
                        // TODO自动生成的catch块

                    }
                    publishProgress(R.drawable.loading_full,
                            R.drawable.loading_full,R.drawable.loading_full,
                            R.drawable.loading_full,R.drawable.loading_empty);
                    尝试 {
                        视频下载(500);
                    }赶上(InterruptedException异常E){
                        // TODO自动生成的catch块

                    }
                    publishProgress(R.drawable.loading_full,
                            R.drawable.loading_full,R.drawable.loading_full,
                            R.drawable.loading_full,R.drawable.loading_full);

                    //睡眠1/2秒
                    尝试 {
                        视频下载(500);
                    }赶上(InterruptedException异常E){
                        // TODO自动生成的catch块

                    }
                }

                    返回流;
            }


        }
        / *
         *将查询发送到服务器和回来的分析结果捆绑
         * urlQueryString  -  URL调用web服务
         * /
        保护同步的InputStream getQueryResults(字符串urlQueryString)
                抛出IOException异常,SAXException中,异常SSLException,
                SocketTimeoutException如果,异常{
            尝试 {
                // HttpsURLConnection HTTPS = NULL;
                字符串的uri = urlQueryString;

                名单<的NameValuePair> namevaluepairs中=新的ArrayList<的NameValuePair>();
                BasicNameValuePair mdn1,mdn2,ID1,ID2;
                如果(MDN.equals()){
                    mdn1 =新BasicNameValuePair(mdn1,NULL);
                    mdn2 =新BasicNameValuePair(mdn2,NULL);
                } 其他 {
                    mdn1 =新BasicNameValuePair(mdn1,mdN1.toString());
                    mdn2 =新BasicNameValuePair(mdn2,mdN2.toString());

                }

                BasicNameValuePair车=新BasicNameValuePair(汽车,汽车);
                如果(ICCID.equals()){
                     ID1 =新BasicNameValuePair(ID1,NULL);
                     ID2 =新BasicNameValuePair(ID2,NULL);
                } 其他 {
                     ID1 =新BasicNameValuePair(ID1,
                            iD1.toString());
                     ID2 =新BasicNameValuePair(ID2
                            iD2.toString());
                }

                nameValuePairs.add(mdn1);
                nameValuePairs.add(mdn2);
                nameValuePairs.add(车);
                nameValuePairs.add(ID1);
                nameValuePairs.add(ID2);

                UrlEn codedFormEntity urlEn codedFormEntity =新UrlEn codedFormEntity(
                        namevaluepairs中,ISO-8859-1);
                密钥库的trustStore = KeyStore.getInstance(密钥库
                        .getDefaultType());
                trustStore.load(NULL,NULL);

                SSLSocketFactory的SF =新MySSLSocketFactory(的trustStore);
                sf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);

                的HttpParams PARAMS =新BasicHttpParams();
                HttpProtocolParams.setVersion(参数,可以HttpVersion.HTTP_1_1);
                HttpProtocolParams.setContentCharset(参数,可以HTTP.UTF_8);

                SchemeRegistry注册表=新SchemeRegistry();
                registry.register(新计划(HTTP,PlainSocketFactory
                        .getSocketFactory(),80));
                registry.register(新计划(https开头,SF,443));

                ClientConnectionManager CCM =新ThreadSafeClientConnManager(
                        参数,可以登记);

                HttpClient的HttpClient的=新DefaultHttpClient(CCM,则params);
                PARAMS = httpClient.getParams();
                HttpClientParams.setRedirecting(参数,可以真正的);

                HttpPost httpPost =新HttpPost(URI);
                httpPost.addHeader(授权,
                        getB64Auth(nmundru,ABC123));

                httpPost.setHeader(内容类型,text / plain的;字符集= UTF-8);

                Log.v(httpPost,httpPost.toString());

                httpPost.setEntity(urlEn codedFormEntity);
                HTT presponse HTT presponse = httpClient.execute(httpPost);
                的System.out.println(回应......+ HTT presponse.toString());
                Log.v(回应......,HTT presponse.toString());

                流= HTT presponse.getEntity()的getContent()。

                //保存的InputStream在一个文件中

                尝试 {

                    FileOutputStream中FOUT = openFileOutput(settings.xml中,
                            Context.MODE_WORLD_READABLE);

                    在的DataInputStream =新的DataInputStream(流);
                    的BufferedReader BR =新的BufferedReader(
                            新的InputStreamReader(在));
                    字符串strLine中;
                    而((strLine中= br.readLine())!= NULL){
                         的System.out.println(strLine中); //打印响应
                        //在logcat的
                        fOut.write(strLine.getBytes());

                    }
                    fOut.close();

                }赶上(FileNotFoundException异常E){
                    e.printStackTrace();
                }赶上(IOException异常E){
                    e.printStackTrace();
                }

                FIS = openFileInput(的settings.xml);

            }赶上(例外五){
                Log.e(LOG_TAG,e.toString());
            //  再试一次();

            } 最后 {
                // https.disconnect();
            }

            返回流;
        }

        私人字符串getB64Auth(字符串登录,字符串传递){
            字符串源=登录+:+通过;
            字符串RET =基本法
                    + Base64.en codeToString(source.getBytes(),Base64.URL_SAFE
                            | Base64.NO_WRAP);
            返回RET;
        }
        @覆盖
        保护无效onPostExecute(InputStream的流){
            super.onPostExecute(流);
            //这种方法被称为解析响应并保存
            //的ArrayList
            成功();

        }

        公共无效成功(){

            //解析响应
            尝试 {
                handler.getQueryResponse(FIS);
            }赶上(的SAXException E){
                // TODO自动生成的catch块
                e.printStackTrace();
            }赶上(IOException异常E){
                // TODO自动生成的catch块
                e.printStackTrace();
            }

            //一套方法来保存ArryaLists从解析器
            setArrayList();
            意图I =新的意图(UpdateActivity.this,ConfigFinalActivity.class);
            startActivity(ⅰ);
            完();

        }
        //对应publishProgress呼叫框架UI线程的方法
        //工作者线程
        保护无效onProgressUpdate(整数...进度){
            //调用函数来更新图像视图
            setProgressImgView(进展[0],进步[1],进步[2]
                    进展[3],进展[4]);
        }

    }

    私人无效setProgressImgView(整数imgViewId1,整数imgViewId2,
            整数imgViewId3,整数imgViewId4,整数imgViewId5){
        与更新点//更新图像视图
        //重置视图布局的情况下,定向,同时更新
        的setContentView(R.layout.updating);
        mProgressImageview1 =(ImageView的)findViewById(R.id.loading_empty1);
        mProgressImageview2 =(ImageView的)findViewById(R.id.loading_empty2);
        mProgressImageview3 =(ImageView的)findViewById(R.id.loading_empty3);
        mProgressImageview4 =(ImageView的)findViewById(R.id.loading_empty4);
        mProgressImageview5 =(ImageView的)findViewById(R.id.loading_empty5);
        mProgressImageview1.setImageResource(imgViewId1);
        mProgressImageview2.setImageResource(imgViewId2);
        mProgressImageview3.setImageResource(imgViewId3);
        mProgressImageview4.setImageResource(imgViewId4);
        mProgressImageview5.setImageResource(imgViewId5);


    }

    @覆盖
    保护无效onRestart(){
        super.onRestart();

        如果(mErrorAlert!= NULL)
            mErrorAlert.dismiss();
    }

    公共无效TRYAGAIN(){
        //显示最终布局的pre-ICS自动设置失败后
        //更新
        的setContentView(R.layout.tryagain);
        字符串tryAgainText =;
        CharSequence的styledTryAgainText;

        tryAgainText =的String.Format(的getString(R.string.tryagain_text1)
                TotalSteps);
        styledTryAgainText = Html.fromHtml(tryAgainText);
        TextView的tryAgain1 =(TextView中)findViewById(R.id.tryagain_text1);
        tryAgain1.setText(styledTryAgainText);

        tryAgainText =的String.Format(的getString(R.string.tryagain_text2)
                TotalSteps);
        styledTryAgainText = Html.fromHtml(tryAgainText);
        TextView的tryAgain2 =(TextView中)findViewById(R.id.tryagain_text2);
        tryAgain2.setText(styledTryAgainText);

        tryAgainText =的String.Format(的getString(R.string.tryagain_text3)
                TotalSteps);
        styledTryAgainText = Html.fromHtml(tryAgainText);
        TextView的tryAgain3 =(TextView中)findViewById(R.id.tryagain_text3);
        tryAgain3.setText(styledTryAgainText);

    }
    私人无效assistUpdate(){
        //显示pre-ICS自动设置更新后的最终布局
        的setContentView(R.layout.assist_update);
        assist_update_btn =(按钮)findViewById(R.id.assist_update_btn);
        assist_update_btn.setOnClickListener((OnClickListener)本);

    }

    公共无效成功(){

        //解析响应
        尝试 {
            handler.getQueryResponse(FIS);
        }赶上(的SAXException E){
            // TODO自动生成的catch块
            e.printStackTrace();
        }赶上(IOException异常E){
            // TODO自动生成的catch块
            e.printStackTrace();
        }

        //一套方法来保存ArryaLists从解析器
        setArrayList();
        意图I =新的意图(这一点,ConfigFinalActivity.class);
        startActivity(ⅰ);
        完();

    }

    公共字符串的getResult(){

        返回结果;
    }

}
 

解决方案

您可以使用preExecute()和onPostExecute()从AsyncTask的方法之前设置的加载/删除它的工作完成之后。

尝试:

 在preExecute保护无效(){
           setProgressImgView(R.drawable.loading_full,
                            R.drawable.loading_empty,R.drawable.loading_empty,
                            R.drawable.loading_empty,R.drawable.loading_empty);
}

保护无效onPostExecute(InputStream的流){

           setProgressImgView(R.drawable.loading_full,
                        R.drawable.loading_full,R.drawable.loading_full,
                        R.drawable.loading_full,R.drawable.loading_full);


    //这种方法被称为解析响应并保存
    //的ArrayList
    成功();

}
 

I have an android Animation which loads a series of sequential dots (publishProgress) however there is a 10+ second delay before they start because I have them as a part of my AsyncTask which loads once the data is processing (technically - the two should be related - but it visually causes there to be a delay) how can I call this animation when the class first starts instead? I need to remove this visual animation delay.

SOURCE:

public class UpdateActivity extends Activity implements OnClickListener {

    private TelephonyManager tm;

    AlertDialog mConfirmAlert = null;
    NetworkTask task;
    ImageView image, text;
    AlertDialog mErrorAlert = null;
    public static ArrayList<String> NameArr = new ArrayList<String>();
    public static ArrayList<String> ValueArr = new ArrayList<String>();
    public static ArrayList<String> nameArr = new ArrayList<String>();
    public static ArrayList<String> ApnArr = new ArrayList<String>();
    public static ArrayList<String> mmscArr = new ArrayList<String>();
    public static ArrayList<String> mmsportArr = new ArrayList<String>();
    public static ArrayList<String> mmsproxyArr = new ArrayList<String>();
    public static ArrayList<String> portArr = new ArrayList<String>();
    public static ArrayList<String> proxyArr = new ArrayList<String>();
    private ImageView mProgressImageview1;
    private ImageView mProgressImageview2;
    private ImageView mProgressImageview3;
    private ImageView mProgressImageview4;
    private ImageView mProgressImageview5;  
    private Button mUpdateButton = null;
    private Button mAssistUpdateButton = null;
    private Button mAssistInstrButton = null;
    private TextView mReadAgainButton = null;
    public static int count;
    public AnimationDrawable mTextAnimation = null;
    private Button assist_update_btn = null;
    TextView mUpdatetext;
    public static InputStream stream = null;
    int version;
    public static BigInteger iD1, iD2, mdN1, mdN2;
    BigInteger[] id, mdnId;
    public static String ICCID, MDN;
    private int mInstructionNumber = 0;
    public static String caR, result;
    private static final String LOG_TAG = "DataSettings";

    public static final String Base_URL = "https://apps.example.com/REST/phoneSettings";

    public static XmlParserHandlerFinal handler;
    public static int TotalSteps = 8;

    public FileInputStream fis;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // instance for xml parser class
        handler = new XmlParserHandlerFinal();
        handler.setContext(this.getBaseContext());
        tm = (TelephonyManager) getSystemService(TELEPHONY_SERVICE);
        int networkType = tm.getNetworkType();
        int phoneType = tm.getPhoneType();
        version = android.os.Build.VERSION.SDK_INT;
        // to get MDN(MCC+MNC) of the provider of the SIM and ICCID (Serial
        // number of the SIM)
        // and to check for the Carrier type
        getImpVariablesForQuery();
        task = new NetworkTask();
        if (phoneType == TelephonyManager.PHONE_TYPE_CDMA
                || (phoneType != TelephonyManager.PHONE_TYPE_GSM
                        && networkType != TelephonyManager.NETWORK_TYPE_GPRS
                        && networkType != TelephonyManager.NETWORK_TYPE_EDGE
                        && networkType != TelephonyManager.NETWORK_TYPE_HSDPA
                        && networkType != TelephonyManager.NETWORK_TYPE_HSPA
                        && networkType != TelephonyManager.NETWORK_TYPE_HSPAP
                        && networkType != TelephonyManager.NETWORK_TYPE_HSUPA
                        && networkType != TelephonyManager.NETWORK_TYPE_UMTS && networkType != TelephonyManager.NETWORK_TYPE_LTE)) {
            // If the phone type is CDMA or
            // the phone phone type is not GSM and the network type is none of
            // the network types indicated in the statement
            // Display incompatibility message
            showAlert(getString(R.string.incomp_sm_dialog));
            // Network type is looked because some tablets have no phone type.
            // We rely on network type in such cases
        } else if (!(tm.getSimState() == TelephonyManager.SIM_STATE_ABSENT
                || (tm.getSimOperator())
                        .equals(getString(R.string.numeric_tmo)) || (tm
                    .getSimOperator()).equals(getString(R.string.numeric_att)))) {
            // if SIM is present and is NOT a T-Mo or ATT network SIM,
            // display Error message alert indicating to use SM SIM
            showAlert(getString(R.string.insert_sm_dialog));
        }// No SIM or SIM with T-Mo & ATT MNC MCC present
        else if ((tm.getSimOperator()).equals(getString(R.string.numeric_tmo))
                || (tm.getSimOperator())
                        .equals(getString(R.string.numeric_att))) {
            // Device has T-Mo or ATT network SIM card MCC and MNC correctly
            // populated
            TotalSteps = 6;
            setContentView(R.layout.updating);

            // AsyncTask to call the web service
            task = new NetworkTask();
            task.execute("");
        }
    }

    public void onClick(View v) {
        if (v == mUpdateButton) {
            // Update button for versions lower than ICS is selected

            onClickMethod(v);

            Intent i = new Intent(this, ConfigFinalActivity.class);
            startActivity(i);
            finish();
        } else

        if (v.getId() == R.id.assist_update_btn) {

            // Update button for ICS and up is selected
            // Get the TextView in the Assist Update UI
            TextView tv = (TextView) findViewById(R.id.apn_app_text_cta2);
            String text = "";
            CharSequence styledText = text;
            switch (mInstructionNumber) {
            case 0:
                // Retrieve the instruction string resource corresponding the
                // 2nd set of instructions
                text = String.format(getString(R.string.apn_app_text_instr),
                        TotalSteps);
                styledText = Html.fromHtml(text);
                // Update the TextView with the correct set of instructions
                tv.setText(styledText);
                // Increment instruction number so the correct instructions
                // string resource can be retrieve the next time the update
                // button is pressed
                mInstructionNumber++;
                break;
            case 1:
                text = getString(R.string.apn_app_text_instr2);
                styledText = Html.fromHtml(text);
                tv.setText(styledText);
                // Increment instruction number so the correct instructions
                // string resource can be retrieve the next time the update
                // button is pressed
                mInstructionNumber++;
                break;
            case 2:
                // Final set of instructions-Change to the corresponding layout

                setContentView(R.layout.assist_instructions);
                String assistUpdateInstr = String.format(
                        getString(R.string.apn_app_text_instr3), TotalSteps);
                styledText = Html.fromHtml(assistUpdateInstr);
                TextView assistInstrText = (TextView) findViewById(R.id.updated_text);
                assistInstrText.setText(styledText);
                mAssistInstrButton = (Button) findViewById(R.id.assist_instr_btn);
                mReadAgainButton = (TextView) findViewById(R.id.read_again_btn);
                mAssistInstrButton.setOnClickListener(this);
                mReadAgainButton.setOnClickListener(this);
            }
        } else if (v == mAssistInstrButton) {
            // "LET'S DO THIS" Button in final instructions screen for ICS and
            // up is selected
            // Create ConfigActivity Intent
            Intent i = new Intent(this, ConfigFinalActivity.class);
            // Invoke ConfigActivity Intent to start the assisted update
            startActivity(i);
            startActivity(new Intent(Settings.ACTION_APN_SETTINGS));

        } else if (v == mReadAgainButton) {
            // go back to 1st set of instructions if read again is selected
            mInstructionNumber = 0;
            setContentView(R.layout.assist_update);
            String assistUpdate = getString(R.string.apn_app_text_cta2);
            CharSequence styledText = Html.fromHtml(assistUpdate);
            TextView assistText = (TextView) findViewById(R.id.apn_app_text_cta2);
            assistText.setText(styledText);
            mAssistUpdateButton = (Button) findViewById(R.id.assist_update_btn);
            mAssistUpdateButton.setOnClickListener(this);
        }
    }

    public void onClickMethod(View v) {
        mUpdateButton = (Button) findViewById(R.drawable.btn_update_active_hdpi);

    }

    private void showAlert(String message) {
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setMessage(message).setPositiveButton("OK",
                new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int id) {
                        UpdateActivity.this.finish();
                    }
                });
        mConfirmAlert = builder.create();
        mConfirmAlert.show();
    }


    private void getImpVariablesForQuery() {

        long d = 1234;
        BigInteger divisor = BigInteger.valueOf(d);
        // to get MDN
    //  MDN = tm.getLine1Number();
        MDN = "3055861092";
        if (MDN.equals("")) {
            mdN1 = null;
            mdN2 = null;
        } else {

            Log.d("MDN", MDN);
            BigInteger bInt = new BigInteger(MDN);
            mdnId = bInt.divideAndRemainder(divisor);
            // to retrieve ICCID number of the SIM
            mdN1 = mdnId[1];
            System.out.println("MDN%1234 = " + mdN1);
            mdN2 = mdnId[0];
            System.out.println("MDN/1234 = " + mdN2);

        }
        ICCID = tm.getSimSerialNumber();
        if (ICCID.equals("")) {
            iD1 = null;
            iD2 = null;
        } else {
            Log.d("ICCID", ICCID);

            BigInteger bInteger = new BigInteger(ICCID);
            id = bInteger.divideAndRemainder(divisor);
            iD1 = id[1];
            System.out.println("ICCID%1234 = " + iD1);
            iD2 = id[0];
            System.out.println("ICCID/1234 = " + iD2);
        }
        // Check for the Carrier Type
        if ((tm.getSimOperator()).equals(getString(R.string.numeric_tmo))) {
            caR = "TMO";
        } else if ((tm.getSimOperator())
                .equals(getString(R.string.numeric_att))) {
            caR = "ATT";
        }

    }

    // method to save the ArrayLists from parser
    public static void setArrayList() {
        nameArr = handler.getnameArr();
        ApnArr = handler.getApnArr();
        mmscArr = handler.getMMSCArr();
        mmsproxyArr = handler.getMmscProxyArr();
        mmsportArr = handler.getMmsPortArr();
        proxyArr = handler.getProxyArr();
        portArr = handler.getPortArr();
        count = handler.getCount();
        result = handler.getResult();

    }



    public ArrayList<String> getnameArr() {

        return nameArr;
    }

    public ArrayList<String> getApnArr() {

        return ApnArr;
    }

    public ArrayList<String> getMMSCArr() {

        return mmscArr;
    }

    public ArrayList<String> getMmscProxyArr() {

        return mmsproxyArr;
    }

    public ArrayList<String> getMmsPortArr() {

        return mmsportArr;
    }

    public int getCount() {
        return count;
    }

    public ArrayList<String> getProxyArr() {

        return proxyArr;
    }

    public ArrayList<String> getPortArr() {

        return portArr;
    }

    // AsyncTask to call web service
    public class NetworkTask extends AsyncTask<String, Integer, InputStream> {

        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            //
        }

        @Override
        protected InputStream doInBackground(String... params) {
            int result = 0;

            {
                Log.i("url...", Base_URL);

                try {
                    stream = getQueryResults(Base_URL);
                } catch (SocketTimeoutException e1) {
                    // TODO Auto-generated catch block
                    e1.printStackTrace();
                } catch (SSLException e1) {
                    // TODO Auto-generated catch block
                    e1.printStackTrace();
                } catch (IOException e1) {
                    // TODO Auto-generated catch block
                    e1.printStackTrace();
                } catch (SAXException e1) {
                    // TODO Auto-generated catch block
                    e1.printStackTrace();
                } catch (Exception e1) {
                    // TODO Auto-generated catch block
                    e1.printStackTrace();
                }
                // The code below plays a ST Promo animation
                // prior to displaying update success or failure message
                for (int incr = 0; incr < 2; incr++) {
                    // Sleep for 1/2 second
                    // Invoke UI to change updating text to show 1 dot
                    // And Increasing the level to reduce the amount of clipping
                    // and
                    // slowly reveals the hand image
                    publishProgress(R.drawable.loading_full,
                            R.drawable.loading_empty, R.drawable.loading_empty,
                            R.drawable.loading_empty, R.drawable.loading_empty);
                    try {
                        Thread.sleep(500);
                    } catch (InterruptedException e) {
                        // TODO Auto-generated catch block

                    }
                    publishProgress(R.drawable.loading_full,
                            R.drawable.loading_full, R.drawable.loading_empty,
                            R.drawable.loading_empty, R.drawable.loading_empty);
                    try {
                        Thread.sleep(500);
                    } catch (InterruptedException e) {
                        // TODO Auto-generated catch block

                    }
                    publishProgress(R.drawable.loading_full,
                            R.drawable.loading_full, R.drawable.loading_full,
                            R.drawable.loading_empty, R.drawable.loading_empty);
                    try {
                        Thread.sleep(500);
                    } catch (InterruptedException e) {
                        // TODO Auto-generated catch block

                    }
                    publishProgress(R.drawable.loading_full,
                            R.drawable.loading_full, R.drawable.loading_full,
                            R.drawable.loading_full, R.drawable.loading_empty);
                    try {
                        Thread.sleep(500);
                    } catch (InterruptedException e) {
                        // TODO Auto-generated catch block

                    }
                    publishProgress(R.drawable.loading_full,
                            R.drawable.loading_full, R.drawable.loading_full,
                            R.drawable.loading_full, R.drawable.loading_full);

                    // Sleep for 1/2 second
                    try {
                        Thread.sleep(500);
                    } catch (InterruptedException e) {
                        // TODO Auto-generated catch block

                    }
                }

                    return stream;
            }


        }
        /*
         * Sends a query to server and gets back the parsed results in a bundle
         * urlQueryString - URL for calling the webservice
         */
        protected synchronized InputStream getQueryResults(String urlQueryString)
                throws IOException, SAXException, SSLException,
                SocketTimeoutException, Exception {
            try {
                // HttpsURLConnection https = null;
                String uri = urlQueryString;

                List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
                BasicNameValuePair mdn1, mdn2,id1,id2;
                if (MDN.equals("")) {
                    mdn1 = new BasicNameValuePair("mdn1", null);
                    mdn2 = new BasicNameValuePair("mdn2", null);
                } else {
                    mdn1 = new BasicNameValuePair("mdn1", mdN1.toString());
                    mdn2 = new BasicNameValuePair("mdn2", mdN2.toString());

                }

                BasicNameValuePair car = new BasicNameValuePair("car", caR);
                if (ICCID.equals("")) {
                     id1 = new BasicNameValuePair("id1", null);
                     id2 = new BasicNameValuePair("id2", null);
                } else {
                     id1 = new BasicNameValuePair("id1",
                            iD1.toString());
                     id2 = new BasicNameValuePair("id2",
                            iD2.toString());
                }

                nameValuePairs.add(mdn1);
                nameValuePairs.add(mdn2);
                nameValuePairs.add(car);
                nameValuePairs.add(id1);
                nameValuePairs.add(id2);

                UrlEncodedFormEntity urlEncodedFormEntity = new UrlEncodedFormEntity(
                        nameValuePairs, "ISO-8859-1");
                KeyStore trustStore = KeyStore.getInstance(KeyStore
                        .getDefaultType());
                trustStore.load(null, null);

                SSLSocketFactory sf = new MySSLSocketFactory(trustStore);
                sf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);

                HttpParams params = new BasicHttpParams();
                HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1);
                HttpProtocolParams.setContentCharset(params, HTTP.UTF_8);

                SchemeRegistry registry = new SchemeRegistry();
                registry.register(new Scheme("http", PlainSocketFactory
                        .getSocketFactory(), 80));
                registry.register(new Scheme("https", sf, 443));

                ClientConnectionManager ccm = new ThreadSafeClientConnManager(
                        params, registry);

                HttpClient httpClient = new DefaultHttpClient(ccm, params);
                params = httpClient.getParams();
                HttpClientParams.setRedirecting(params, true);

                HttpPost httpPost = new HttpPost(uri);
                httpPost.addHeader("Authorization",
                        getB64Auth("nmundru", "abc123"));

                httpPost.setHeader("Content-Type", "text/plain; charset=utf-8");

                Log.v("httpPost", httpPost.toString());

                httpPost.setEntity(urlEncodedFormEntity);
                HttpResponse httpResponse = httpClient.execute(httpPost);
                System.out.println("response...." + httpResponse.toString());
                Log.v("response...", httpResponse.toString());

                stream = httpResponse.getEntity().getContent();

                // save the InputStream in a file

                try {

                    FileOutputStream fOut = openFileOutput("settings.xml",
                            Context.MODE_WORLD_READABLE);

                    DataInputStream in = new DataInputStream(stream);
                    BufferedReader br = new BufferedReader(
                            new InputStreamReader(in));
                    String strLine;
                    while ((strLine = br.readLine()) != null) {
                         System.out.println(strLine); //to print the response
                        // in logcat
                        fOut.write(strLine.getBytes());

                    }
                    fOut.close();

                } catch (FileNotFoundException e) {
                    e.printStackTrace();
                } catch (IOException e) {
                    e.printStackTrace();
                }

                fis = openFileInput("settings.xml");

            } catch (Exception e) {
                Log.e(LOG_TAG, e.toString());
            //  tryagain();

            } finally {
                // https.disconnect();
            }

            return stream;
        }

        private String getB64Auth(String login, String pass) {
            String source = login + ":" + pass;
            String ret = "Basic "
                    + Base64.encodeToString(source.getBytes(), Base64.URL_SAFE
                            | Base64.NO_WRAP);
            return ret;
        }
        @Override
        protected void onPostExecute(InputStream stream) {
            super.onPostExecute(stream);
            // This method is called to parse the response and save the
            // ArrayLists
            success();

        }

        public void success() {

            // to parse the response
            try {
                handler.getQueryResponse(fis);
            } catch (SAXException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

            // set method to save the ArryaLists from the parser
            setArrayList();
            Intent i = new Intent(UpdateActivity.this, ConfigFinalActivity.class);
            startActivity(i);
            finish();

        }
        // Framework UI thread method corresponding to publishProgress call in
        // worker thread
        protected void onProgressUpdate(Integer... progress) {
            // Call function to update image view
            setProgressImgView(progress[0], progress[1], progress[2],
                    progress[3], progress[4]);
        }

    }

    private void setProgressImgView(Integer imgViewId1, Integer imgViewId2,
            Integer imgViewId3, Integer imgViewId4, Integer imgViewId5) {
        // update image view with the updating dots
        // Reset view layout in case orientation while updating
        setContentView(R.layout.updating);
        mProgressImageview1 = (ImageView) findViewById(R.id.loading_empty1);
        mProgressImageview2 = (ImageView) findViewById(R.id.loading_empty2);
        mProgressImageview3 = (ImageView) findViewById(R.id.loading_empty3);
        mProgressImageview4 = (ImageView) findViewById(R.id.loading_empty4);
        mProgressImageview5 = (ImageView) findViewById(R.id.loading_empty5);
        mProgressImageview1.setImageResource(imgViewId1);
        mProgressImageview2.setImageResource(imgViewId2);
        mProgressImageview3.setImageResource(imgViewId3);
        mProgressImageview4.setImageResource(imgViewId4);
        mProgressImageview5.setImageResource(imgViewId5);


    }

    @Override
    protected void onRestart() {
        super.onRestart();

        if (mErrorAlert != null)
            mErrorAlert.dismiss();
    }

    public void tryagain() {
        // Displaying final layout after failure of pre-ICS automatic settings
        // update
        setContentView(R.layout.tryagain);
        String tryAgainText = "";
        CharSequence styledTryAgainText;

        tryAgainText = String.format(getString(R.string.tryagain_text1),
                TotalSteps);
        styledTryAgainText = Html.fromHtml(tryAgainText);
        TextView tryAgain1 = (TextView) findViewById(R.id.tryagain_text1);
        tryAgain1.setText(styledTryAgainText);

        tryAgainText = String.format(getString(R.string.tryagain_text2),
                TotalSteps);
        styledTryAgainText = Html.fromHtml(tryAgainText);
        TextView tryAgain2 = (TextView) findViewById(R.id.tryagain_text2);
        tryAgain2.setText(styledTryAgainText);

        tryAgainText = String.format(getString(R.string.tryagain_text3),
                TotalSteps);
        styledTryAgainText = Html.fromHtml(tryAgainText);
        TextView tryAgain3 = (TextView) findViewById(R.id.tryagain_text3);
        tryAgain3.setText(styledTryAgainText);

    }
    private void assistUpdate() {
        // Displaying final layout after pre-ICS automatic settings update
        setContentView(R.layout.assist_update);
        assist_update_btn = (Button) findViewById(R.id.assist_update_btn);
        assist_update_btn.setOnClickListener((OnClickListener) this);

    }

    public void success() {

        // to parse the response
        try {
            handler.getQueryResponse(fis);
        } catch (SAXException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        // set method to save the ArryaLists from the parser
        setArrayList();
        Intent i = new Intent(this, ConfigFinalActivity.class);
        startActivity(i);
        finish();

    }

    public String getResult() {

        return result;
    }

}

解决方案

You can use onPreExecute() and onPostExecute() methods from the AsyncTask to set the loading before/ remove it after the work is done.

try:

protected void onPreExecute() {
           setProgressImgView(R.drawable.loading_full,
                            R.drawable.loading_empty, R.drawable.loading_empty,
                            R.drawable.loading_empty, R.drawable.loading_empty);
}

protected void onPostExecute(InputStream stream) {

           setProgressImgView(R.drawable.loading_full,
                        R.drawable.loading_full, R.drawable.loading_full,
                        R.drawable.loading_full, R.drawable.loading_full);


    // This method is called to parse the response and save the
    // ArrayLists
    success();

}

这篇关于Android的/ Java的 - 删除连续加载动画延迟的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆