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

안드로이드 볼륨놉 소스 질문입니다.

0 추천
package kr.co.company.customcomponent;

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;
import android.widget.ImageView;

public class VolumeControlView extends ImageView implements View.OnTouchListener  {

    private int angle = 0;
    private KnobListener listener;
    float x, y;
    float mx, my;

    public interface KnobListener {
        public void onChanged(int angle);
    }

    public void setKnobListener(KnobListener lis )
    {
        listener = lis;
    }

    public  VolumeControlView(Context context) {
        super(context);
        this.setImageResource(R.drawable.knob);
        this.setOnTouchListener(this);
    }

    public  VolumeControlView(Context context, AttributeSet attrs)
    {
        super(context, attrs);
        this.setImageResource(R.drawable.knob);
        this.setOnTouchListener(this);
    }

    private double getAngle(float x, float y)
    {
        mx = x - (getWidth() / 2.0f);
        my = (getHeight() / 2.0f) - y;
        double degree = (Math.atan2(mx, my)*180)/Math.PI;
        return degree;
    }

    @Override
    public boolean onTouch(View v, MotionEvent event) {
        x = event.getX(0);
        y = event.getY(0);
        angle = (int)getAngle(x, y);
        invalidate();
        listener.onChanged(angle);

        return true;
    }

    protected void onDraw(Canvas c)
    {
        Paint paint = new Paint();
        c.save();
        c.rotate((float)angle, getWidth()/2, getHeight()/2);
        super.onDraw(c);
        c.restore();
    }
}



package kr.co.company.customcomponent;

import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.widget.Toast;


public class CustomComponentActivity extends ActionBarActivity {

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        VolumeControlView view = (VolumeControlView)findViewById(R.id.volume);
        view.setKnobListener(new VolumeControlView.KnobListener() {
            @Override
            public void onChanged(int angle) {
                Toast t= Toast.makeText(getApplicationContext(),"볼륨크기 : "+String.valueOf(Math.abs(angle)/2),Toast.LENGTH_LONG);
                Toast t1= Toast.makeText(getApplicationContext(),"볼륨크기 : 0",Toast.LENGTH_LONG);
                if (angle>0)
                    t.show();// 오른쪽으로 회전
                else
                    t1.show();// 왼쪽으로 회전
                t.cancel();
                t1.cancel();
            }
        });
    }

}

이 어플은 볼륨놉으로 볼륨을 조절하는 어플로 수치는 볼륨 수치는 0~99까지 하려고하는데요

이걸 그대로 디버깅하면 오른쪽으로 180도 돌리면 90에서 180도를 넘어가면 바로0으로 되게해놨습니다.

어떻게해야 360도를 돌렸을때 99가나오게할까요?ㅜㅜ 제발 도와주십쇼

볼륨함수는 안만들어도 됩니다.

어뭐야 (120 포인트) 님이 2016년 4월 8일 질문

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...