마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

터치하면 게이지가 오르고, 떼면 도중에서 멈추는 터치 리스너 질문입니다.

0 추천

버튼을 눌렀을 때 게이지가 올라가고, 떼면 도중에 멈추게 하도록 만들고 싶습니다. 

구글링을 이용해서 코드를 작성했습니다. 그런데 문제는 

아래의 버튼을 누르면 1초내로 게이지가 다 차고, 버튼을 다시 눌러도 

다시 원상태로 돌아가지 않습니다. 

package andromeda.android.button1;

import android.graphics.drawable.AnimationDrawable;
import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

    Button start;
    AnimationDrawable ani;
    ImageView img;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        start = findViewById(R.id.start);
        img = findViewById(R.id.img);
        img.setBackgroundResource( R.drawable.animation );
        ani = (AnimationDrawable)img.getBackground();

        start.setOnTouchListener(touch);
    }
    View.OnTouchListener touch = new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            switch (event.getAction()) {

                case MotionEvent.ACTION_DOWN:
                    handler.sendEmptyMessage(0);


                    break;

                case MotionEvent.ACTION_UP :
                    handler.sendEmptyMessage(1);
                    break;
            }
            return true;
        }
    };

    Handler handler = new Handler() {
        @Override
        public void handleMessage(Message msg) {

            switch (msg.what) {
                case 0 :
                    img.setBackgroundResource( R.mipmap.a1 );
                    img.setBackgroundResource( R.mipmap.a2 );
                    img.setBackgroundResource( R.mipmap.a3 );
                    img.setBackgroundResource( R.mipmap.a4 );
                    img.setBackgroundResource( R.mipmap.a5 );
                    img.setBackgroundResource( R.mipmap.a6 );
                    img.setBackgroundResource( R.mipmap.a7 );
                    img.setBackgroundResource( R.mipmap.a8 );
                    img.setBackgroundResource( R.mipmap.a9 );
                    img.setBackgroundResource( R.mipmap.a10 );
                    ani.start();
                    break;

                case 1:
                    ani.stop();
                    break;
            }

        }
    };
}



oldblueberry (140 포인트) 님이 2018년 7월 27일 질문

1개의 답변

0 추천
프레임 애니메이션을 하시려고 한것 같은데 이미지뷰에 setbackground로 일일이 설정해봤자 마지막값만 반영되니 R.mipmap.a10이미지만 보일겁니다. 아마 이게 꽉찬 이미지같은데 그래서 그럴거구요.

https://m.blog.naver.com/tkddlf4209/220700630361 참고해보시면 될것같네요. xml에 item으로 미리 설정해놓고 그 item을 이미지뷰 백그라운드로 설정하는걸 보신것 같은데 이거 따라하면 될겁니다.
사막돌고래 (1,410 포인트) 님이 2018년 8월 6일 답변
...