안드로이드 5일차

ParkJinYoung·2022년 10월 13일

Intent

  • 화면전환, 다른 어플 실행(카메라, 웹브라우저, 갤러리)
  • 핸드폰 내에 센서사용(블루투스, GPS, 전화걸기)

    ✔✔중요✔✔
    OnClickListener라는 인터페이스
    인터페이스란?
    상수, 추상메소드만 작성하는 설계도
    추상메소드 => 세부적인 알고리즘을 설계하지 않습니다.
    알고리즘 설계 (오버라이딩)의 책임은 하위 클래스에게 있다
    추상메소드를 포함하고 있는 클래스를 상속받을 때는 반드시 오버라이딩 해야함.
    구현의 강제성

public class LoginActivity extends AppCompatActivity {
    TextView tv_call;
    TextView tv_kakao;
    Button btn_login;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login);

        //textview 선택하면 카카오 페이지 띄우기!
        //클릭이벤트 연결하는 방법 중 onclick이 아닌 다른방식
        //1. 이벤트를 걸어주고 싶은 view를 찾아온다.
        tv_kakao = findViewById(R.id.tv_kakao);
        //2. 속성 중 onclickListener를 사용하여 이벤트 처리를 해준다.
        //Listener는 이벤트를 감지하는 개체
        tv_kakao.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View View) {
                //이벤트 처리 메소드

                //Intent 사용해서 카카오 페이지 띄워주자
                //new Intent(액션,데이터)
                Intent intent_kakao = new Intent(Intent.ACTION_VIEW,
                        Uri.parse("https://www.kakaocorp.com/page/"));

                //있어야 실행이됨
                startActivity(intent_kakao);
            }

        });
        tv_call = findViewById(R.id.tv_call);

        tv_call.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View View) {
                //전화걸기! : 안드로이드 입장에선 상당히 민감한 작업(보안문제)
                //권한(premission)요청 작업이 필요함
            if(ActivityCompat.checkSelfPermission(getApplicationContext(),
                    Manifest.permission.CALL_PHONE)!= PackageManager.PERMISSION_GRANTED){
                //현재 CALL_PHONE 권한이 없다면
                ActivityCompat.requestPermissions(LoginActivity.this//(현재클래스이름)
                        ,new String[]{Manifest.permission.CALL_PHONE}
                        ,0);//요청을 보내서 응답이 올때 쓰는 코드값
            }
            Intent intent_call = new Intent(Intent.ACTION_CALL,
                    Uri.parse("tel:01092648478"));
            //tel: (mine 타입 데이터형태  ==> Json도 그렇다.)
            startActivity(intent_call);
            }
        });

        //로그인 버튼에 이벤트 리스너 걸어주기
        btn_login = findViewById(R.id.btn_login);
        btn_login.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //보내는클래스.this => 받는클래스.class
                Intent intent_main=new Intent(LoginActivity.this,
                        MainActivity.class);
            startActivity(intent_main);
            }
        });

    }
}
public class MainActivity extends AppCompatActivity {
    ImageView img_logo2;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        img_logo2=findViewById(R.id.img_logo2);
        img_logo2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //보내는클래스.this => 받는클래스.class
                Intent intent_main=new Intent(MainActivity.this,
                        LoginActivity.class);
                //현재 activity만 삭제하는 명령
                finish();
            }
        });
    }
}

자료구조

  • 값(데이터), 작업을 어떠한 구조로 저장하고 처리할 것인가를 결정하는 기술
  • List : 선형구조 (linear),인덱스를 가진다, 정렬이 가능, 추가&삭제는 적합하지않다. (데이터 저장)
  • Stack : 선형구조 (linear), 들어오는쪽 나오는쪽 구별이 안되어있다, 먼저들어온 작업이 맨 마지막에 빠져나온다. FILO, 추가-push 삭제(꺼낸다)-pop,Multitask : 여러 Task을 가진다, (작업을 저장)
  • Queue : 선형구조 (linear), 들어오는쪽 나오는쪽 구별되어있다, 먼저들어온 작업이 먼저 나간다, Stream : 데이터가 지나가는 통로 => 버퍼 : 스트림안에 있는 중간 저장소,(작업을 저장)
  • Map : Key와 Value 값이 따로 저장되어있다,추가&삭제 좋음, 순서는 없다.(데이터 저장)
  • Tree : 폴더의 개념 => 파일저장, 계층적으로 저장(데이터 저장)

자료구조

profile
꾸준히

0개의 댓글