如果它们相似,如何将GifImageView与Drawable进行比较?

时间:2017-05-17 04:19:07

标签: android android-drawable

我有一个应用程序在屏幕上运行Gif,其中部分图像 SCATTERED ,但是这一刻,分散的图像将会显示原始图像

Gif也是可点击的。当应用程序运行时,Gif会自动启动。 点击Gif时,Gif会冻结。当你再次点击它时,Gif会恢复。

我希望用户体验的是在他们合并成为原始图片时停止图片。

我很难将原始图像与冻结的Gif的当前图像进行比较。我希望你能帮助我。

活动:

public class NextActivity extends Activity {

GifImageView image;

int counter =0;




@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
    setContentView(R.layout.activity_next);

     image = (GifImageView) findViewById(R.id.img_1);




    image.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if(counter%2==0){

                image.setFreezesAnimation(true);
                ((GifDrawable)image.getBackground()).stop();


                if(image.getBackground().getCurrent().getConstantState() == ContextCompat.getDrawable(NextActivity.this,R.drawable.lvl_1).getConstantState())
                {
                    Toast.makeText(NextActivity.this,"GOOD JOB!",Toast.LENGTH_SHORT).show();
                }
                else
                    Toast.makeText(NextActivity.this,"ALMOST!",Toast.LENGTH_SHORT).show();


                counter++;


            }
            else{
                image.setFreezesAnimation(false);

                ((GifDrawable)image.getBackground()).start();
                counter++;
            }
        }
    });




}


}

1 个答案:

答案 0 :(得分:0)

您可以使用线程。

boolean flag = false;
Handler mHandler = new Handler();

pause.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        if(flag)
            PauseThread();
            flag=!flag;
            }
        });
resume.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        animation.play();
        flag=!flag;
    }
    });


public void PauseThread()
{

  new Thread(new Runnable() {
            @Override
            public void run() {
                // TODO Auto-generated method stub
                while (true) {
                    try {
                        Thread.sleep(10000); // 10 sec 
                        mHandler.post(new Runnable() {

                            @Override
                            public void run() {
                                // TODO Auto-generated method stub
                                // Write your code here to update the UI.
                                    animation.stop();
                                      //flag=!flag;
                                }
                            });
                        } catch (Exception e) {}
                    }
                }
            }).start();
}