Android 计时器运行时,动画GIF在WebView中冻结

Android 计时器运行时,动画GIF在WebView中冻结,android,android-webview,countdowntimer,Android,Android Webview,Countdowntimer,我有一个加载了动画gif的网络视图。我也有一个倒计时计时器,当它启动时,它会加载一个不同的动画gif 计时器运行时,gif不会设置动画。解决这个问题的最佳方法是什么 public class Practice extends SherlockActivity implements AnimationLayout.Listener { public final static String TAG = "Practice"; protected ListView mList; protec

我有一个加载了动画gif的网络视图。我也有一个倒计时计时器,当它启动时,它会加载一个不同的动画gif

计时器运行时,gif不会设置动画。解决这个问题的最佳方法是什么

public class Practice extends SherlockActivity implements
    AnimationLayout.Listener {
public final static String TAG = "Practice";

protected ListView mList;
protected AnimationLayout mLayout;
protected String[] mStrings = { "Lesson 1", "Lesson 2", "Lesson 3",
        "Lesson 4", "Lesson 5", "Lesson 6", "Lesson 7", "Lesson 8",
        "Lesson 9", "Lesson 10" };
String[] lesson1;
String[] lesson2;
String[] lesson3;
String[] lesson4;
String[] lesson5;
String[] lesson6;
String[] lesson7;
String[] lesson8;
String[] lesson9;
String[] lesson10;
Button buttonA;
Button buttonB;
Button buttonC;
Button buttonD;
String[] prev;
int numCorrect;
int numWrong;
int i;
String answer;
static Random rnd;
Random r;
final String alphabet = "ABCD";
final int N = 4;
char letter = 'A';
String rand = " ";
int index;
WebView sign;
long mMilliseconds = 10000;
TextView score;

CountDownTimer mCountDownTimer = new CountDownTimer(mMilliseconds, 10){
    @Override
    public void onFinish() {
        score.setText("0");
    }

    public void onTick(long millisUntilFinished){
        score.setText(String.valueOf(millisUntilFinished/100));
    }
};
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_practice);

    prev = new String[100];
    rnd = new Random();
    r = new Random();
    score = (TextView) findViewById(R.id.textView1);

    lesson1 = getResources().getStringArray(R.array.lesson_1);
    lesson2 = getResources().getStringArray(R.array.lesson_2);
    lesson3 = getResources().getStringArray(R.array.lesson_3);
    lesson4 = getResources().getStringArray(R.array.lesson_4);
    lesson5 = getResources().getStringArray(R.array.lesson_5);
    lesson6 = getResources().getStringArray(R.array.lesson_6);
    lesson7 = getResources().getStringArray(R.array.lesson_7);
    lesson8 = getResources().getStringArray(R.array.lesson_8);
    lesson9 = getResources().getStringArray(R.array.lesson_9);
    lesson10 = getResources().getStringArray(R.array.lesson_10);

    rand = lesson1[rnd.nextInt(lesson1.length)];

    mLayout = (AnimationLayout) findViewById(R.id.animation_layout);
    mLayout.setListener(this);

    mList = (ListView) findViewById(R.id.sidebar_list);
    mList.setAdapter(new ArrayAdapter<String>(this,
            android.R.layout.simple_list_item_multiple_choice, mStrings));
    mList.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
    mList.setItemChecked(0, true);

    sign = new WebView(getApplicationContext());
    sign = (WebView) findViewById(R.id.webView1);

    buttonA = (Button) findViewById(R.id.option1_button);
    buttonB = (Button) findViewById(R.id.option2_button);
    buttonC = (Button) findViewById(R.id.option3_button);
    buttonD = (Button) findViewById(R.id.option4_button);

    setSign();
}

public void onClickContentButton(View v) {
    mLayout.toggleSidebar();
}

public void onClickA(View v) {
    if (answer == buttonA.getText().toString()) {
        numCorrect += 1;
    } else {
        numWrong += 1;
    }

    setSign();
}

public void onClickB(View v) {
    if (answer == buttonB.getText().toString()) {
        numCorrect += 1;
    } else {
        numWrong += 1;
    }

    setSign();
}

public void onClickC(View v) {
    if (answer == buttonC.getText().toString()) {
        numCorrect += 1;
    } else {
        numWrong += 1;
    }

    setSign();
}

public void onClickD(View v) {
    if (answer == buttonD.getText().toString()) {
        numCorrect += 1;
    } else {
        numWrong += 1;
    }

    setSign();
}

public void onClick(View view) {

}

@Override
public void onBackPressed() {
    if (mLayout.isOpening()) {
        mLayout.closeSidebar();
    } else {
        finish();
    }
}

@Override
public void onSidebarOpened() {
    Log.d(TAG, "opened");
}

@Override
public void onSidebarClosed() {
    Log.d(TAG, "opened");
}

@Override
public boolean onContentTouchedWhenOpening() {
    Log.d(TAG, "going to close sidebar");
    mLayout.closeSidebar();
    return true;
}

public void setSign() {

    answer = pickRandomAnswer(prev[i]);

    letter = alphabet.charAt(r.nextInt(N));

    sign.loadUrl("file:///android_asset/" + answer.toLowerCase() + ".html");

    prev[i] = answer;

    buttonA.setText(pickRandomAnswer(answer));
    buttonB.setText(pickRandomAnswer(buttonA.getText().toString()));
    buttonC.setText(pickRandomAnswer(buttonB.getText().toString()));
    buttonD.setText(pickRandomAnswer(buttonC.getText().toString()));

    if (letter == 'A')
        buttonA.setText(answer);
    if (letter == 'B')
        buttonB.setText(answer);
    if (letter == 'C')
        buttonC.setText(answer);
    if (letter == 'D')
        buttonD.setText(answer);

    if(i>= 95){
        i = 0;
    } else {
        i += 1;
    }
    mCountDownTimer.start();
}


public String pickRandomAnswer(String str) {

    do{
        index = rnd.nextInt(10+1);

        if(index == 1){
            if(mList.isItemChecked(0)){
                rand = lesson1[rnd.nextInt(lesson1.length)];
            }
        }

        if(index == 2){
            if(mList.isItemChecked(1)){
                rand = lesson2[rnd.nextInt(lesson2.length)];
            }
        }

        if(index == 3){
            if(mList.isItemChecked(2)){
                rand = lesson3[rnd.nextInt(lesson3.length)];
            }
        }

        if(index == 4){
            if(mList.isItemChecked(3)){
                rand = lesson4[rnd.nextInt(lesson4.length)];
            }
        }

        if(index == 5){
            if(mList.isItemChecked(4)){
                rand = lesson5[rnd.nextInt(lesson5.length)];
            }
        }

        if(index == 6){
            if(mList.isItemChecked(5)){
                rand = lesson6[rnd.nextInt(lesson6.length)];
            }
        }

        if(index == 7){
            if(mList.isItemChecked(6)){
                rand = lesson7[rnd.nextInt(lesson7.length)];
            }
        }

        if(index == 8){
            if(mList.isItemChecked(7)){
                rand = lesson8[rnd.nextInt(lesson8.length)];
            }
        }

        if(index == 9){
            if(mList.isItemChecked(8)){
                rand = lesson9[rnd.nextInt(lesson9.length)];
            }
        }

        if(index == 10){
            if(mList.isItemChecked(9)){
                rand = lesson10[rnd.nextInt(lesson10.length)];
            }
        }

    } while ( rand.contains("Grammar")| rand == str);
    return rand;
}

static void shuffleArray(String[] words) {
    for (int i = words.length - 1; i >= 0; i--) {
        int index = rnd.nextInt(i + 1);
        String a = words[index];
        words[index] = words[i];
        words[i] = a;
    }
}
}
公共类实践扩展了Sherlock活动实现
AnimationLayout.Listener{
公共最终静态字符串TAG=“Practice”;
受保护的ListView mList;
受保护的动画布局;
受保护字符串[]mStrings={“第一课”、“第二课”、“第三课”,
“第四课”、“第五课”、“第六课”、“第七课”、“第八课”,
“第九课”、“第十课”};
字符串[]第1课;
字符串[]第2课;
第三课;
字符串[]第4课;
第五课;
第六课;
第七课;
字符串[]第8课;
字符串[]第9课;
第10课;
纽扣;
按钮b;
按钮;
按钮;
字符串[]prev;
正确无误;
国际numWrong;
int i;
字符串回答;
静态随机rnd;
随机r;
最终字符串字母表=“ABCD”;
最终整数N=4;
字符字母='A';
字符串rand=“”;
整数指数;
网络视图标志;
长mMilliseconds=10000;
文本视图分数;
CountDownTimer mCountDownTimer=新的CountDownTimer(毫米秒,10){
@凌驾
公共无效onFinish(){
得分.setText(“0”);
}
公共void onTick(长毫秒未完成){
score.setText(String.valueOf(millisuntillfinished/100));
}
};
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_practice);
prev=新字符串[100];
rnd=新随机数();
r=新随机数();
分数=(TextView)findViewById(R.id.textView1);
lesson1=getResources().getStringArray(R.array.lesson_1);
lesson2=getResources().getStringArray(R.array.lesson_2);
lesson3=getResources().getStringArray(R.array.lesson3);
lesson4=getResources().getStringArray(R.array.lesson4);
lesson5=getResources().getStringArray(R.array.lesson5);
lesson6=getResources().getStringArray(R.array.lesson6);
lesson7=getResources().getStringArray(R.array.lesson7);
lesson8=getResources().getStringArray(R.array.lesson8);
lesson9=getResources().getStringArray(R.array.lesson9);
lesson10=getResources().getStringArray(R.array.lesson10);
兰德=第1章[第1章第2节(第1章长度)];
mLayout=(AnimationLayout)findviewbyd(R.id.animation\u布局);
setListener(这个);
mList=(ListView)findViewById(R.id.sidebar_列表);
mList.setAdapter(新阵列适配器)(此,
android.R.layout.simple_list_item_多项选择,mStrings);
mList.setChoiceMode(ListView.CHOICE\u MODE\u MULTIPLE);
mList.setItemChecked(0,true);
sign=newwebview(getApplicationContext());
符号=(WebView)findViewById(R.id.webView1);
buttonA=(按钮)findViewById(R.id.option1_按钮);
buttonB=(按钮)findViewById(R.id.option2_按钮);
buttonC=(按钮)findViewById(R.id.option3_按钮);
buttonD=(按钮)findViewById(R.id.option4_按钮);
setSign();
}
公共void onClickContentButton(视图v){
mLayout.toggleSidebar();
}
公共void onclick(视图五){
if(answer==buttonA.getText().toString()){
numCorrect+=1;
}否则{
numWrong+=1;
}
setSign();
}
公共void onClickB(视图五){
if(answer==buttonB.getText().toString()){
numCorrect+=1;
}否则{
numWrong+=1;
}
setSign();
}
公共void onclick c(视图五){
if(answer==buttonC.getText().toString()){
numCorrect+=1;
}否则{
numWrong+=1;
}
setSign();
}
单击公共无效(视图v){
if(answer==buttonD.getText().toString()){
numCorrect+=1;
}否则{
numWrong+=1;
}
setSign();
}
公共void onClick(视图){
}
@凌驾
public void onBackPressed(){
if(mLayout.isopenning()){
mLayout.closeSidebar();
}否则{
完成();
}
}
@凌驾
考虑到公共无效(){
日志d(标签“打开”);
}
@凌驾
公共无效onSidebarClosed(){
日志d(标签“打开”);
}
@凌驾
公共布尔值OnContentTouchedHenopopening(){
Log.d(标记“要关闭侧栏”);
mLayout.closeSidebar();
返回true;
}
公共无效设置标志(){
答案=答案(上[i]);
字母=字母表字符(r.nextInt(N));
sign.loadUrl(“file:///android_asset/“+answer.toLowerCase()+”.html”);
prev[i]=答案;
按钮a.setText(应答(应答));
buttonB.setText(pickRandomAnswer(buttonA.getText().toString());
setText(pickRandomAnswer(buttonB.getText().toString());
buttonD.setText(pickRandomAnswer(buttonC.getText().toString());
如果(字母=='A')
按钮a.setText(答案);
如果(字母=='B')
按钮b.setText(答案);
如果(字母=='C')
按钮c.setText(应答);
如果(字母='D')
按钮。设置文本(答案);
如果(i>=95){
i=0;
}否则{
i+=1;
}
mCountDownTimer.start();
}
公共字符串选择器随机应答(字符串str){
做{
指数=rnd.nextInt(10+1);
如果(索引==1){
如果(列表isItemChecked(0)){
兰德=第1章[第1章第2节(第1章长度)];
}
}
如果(索引==2){
如果(列表isItemChecked(1)){
兰德=第二册[第二册(第二册)长度];
}
}
如果(索引==3){
如果(列表isItemChecked(2)){
兰德=第三册[第二册(第三册长度)];
}
}
如果(索引==4){
如果(列表isItemChecked(3)){
兰德=第四册[第四册(第四册)长度];
}
}
如果(索引==5){
如果(列表isItemChecked(4)){
兰德=第五章[第五章第二节(第五章长度)];
}
}
如果(索引==6){
如果(列表isItemChecked(5)){
兰德=
public void onTick(long millisUntilFinished){
   if (mLastMillisUntilFinished == 0 ||
       mLastMillisUntilFinished - millisUntilFinished > UI_UPDATE_INTERVAL) {
       score.setText(String.valueOf(millisUntilFinished/UI_UPDATE_INTERVAL));
       mLastMillisUntilFinished = millisUntilFinished;
   }
}