ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [6] Intent, Handler, Exit
    Develpment/Android Sample Source 2020. 9. 13. 21:38

    1. Intent


     Sample Source

     

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    package com.ssh.user.ex_1206;
     
    import android.content.Intent;
    import android.net.Uri;
    import android.os.Bundle;
    import android.support.v7.app.AppCompatActivity;
    import android.view.View;
    import android.widget.Button;
     
    public class IntentMainActivity extends AppCompatActivity {
     
        Button btn_next, btn_link;
     
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_intent_main);
     
            btn_next = (Button)findViewById(R.id.btn_next);     // activity 이동
            btn_link = (Button)findViewById(R.id.btn_link);     // web_link
     
            btn_link.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    //웹 페이지로 화면 전환하기.
                    //안드로이드 화면 전환 기능을 담당하는 Intent클래스
     
                    Intent i = new Intent( Intent.ACTION_VIEW );
                    i.setData(Uri.parse("http://www.naver.com"));
                    startActivity(i);   // Intent의 정보를 가지고 화면 전환
                }
            });
     
            btn_next.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    // 1. 생성하면서 바로 설정
                    // Intent i = new Intent(IntentMainActivity.this, IntentSubActivity.class);
     
                    // 2. 나중에 설정
                    Intent i = new Intent();
     
                    // 이동하고자 하는 activity를 명시한다.
                    // 단, 이동하고자 하는 클래스는 Manifest에 등록되어 있어야 한다.
                    i.setClass(IntentMainActivity.this, IntentSubActivity.class);
     
                    startActivity(i);   // 화면전환
                }
            });
     
        }//onCreate()
    }
     
    cs

     

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:id="@+id/activity_intent_main"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:paddingBottom="@dimen/activity_vertical_margin"
        android:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin"
        android:paddingTop="@dimen/activity_vertical_margin"
        tools:context="com.ssh.user.ex_1206.IntentMainActivity"
        android:orientation="vertical">
     
        <Button
            android:id="@+id/btn_next"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="next" />
     
        <Button
            android:id="@+id/btn_link"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="web"/>
     
    </LinearLayout>
     
    cs

     

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    package com.ssh.user.ex_1206;
     
    import android.content.Intent;
    import android.os.Bundle;
    import android.support.v7.app.AppCompatActivity;
    import android.view.View;
    import android.widget.Button;
     
    public class IntentSubActivity extends AppCompatActivity {
     
        Button btn_pre;
     
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_intent_sub);
     
            btn_pre = (Button)findViewById(R.id.btn_pre);
     
            btn_pre.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
     
                    Intent i = new Intent(IntentSubActivity.this, IntentMainActivity.class);
     
                    //intent에게 중복 호출 방지를 위한 Flag 적용(현재창 닫기|맨위중복 방지)
                    i.setFlags( Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
     
                    startActivity(i);
     
                }
            });
        }
    }
     
    cs

     

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:id="@+id/activity_intent_sub"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:paddingBottom="@dimen/activity_vertical_margin"
        android:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin"
        android:paddingTop="@dimen/activity_vertical_margin"
        tools:context="com.ssh.user.ex_1206.IntentSubActivity">
     
        <Button
            android:id="@+id/btn_pre"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="previous"/>
     
    </RelativeLayout>
     
    cs

     



    2. Handler


     Sample Source

     

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    package com.ssh.user.ex_1206;
     
    import android.os.Bundle;
    import android.os.Handler;
    import android.os.Message;
    import android.support.v7.app.AppCompatActivity;
    import android.view.View;
    import android.widget.Button;
    import android.widget.TextView;
     
    public class HandlerActivity extends AppCompatActivity {
     
        TextView txt_count;
        Button btn_start, btn_stop;
        int count;
     
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_handler);
     
            txt_count = (TextView)findViewById(R.id.txt_count);
            btn_start = (Button)findViewById(R.id.btn_start);
            btn_stop = (Button)findViewById(R.id.btn_stop);
     
            btn_start.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    //핸들러 호출(java의 Thread와 비슷)
                    handler.sendEmptyMessage(0);
                }
            });
     
            btn_stop.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    //핸들러 정지
                    handler.removeMessages(0);
                }
            });
     
        }//onCreate
     
        //핸들러
        Handler handler = new Handler()
        {
            @Override
            public void handleMessage(Message msg) {
                //  1000 ms 이후 자신을 호출
                handler.sendEmptyMessageDelayed(0,1000);
     
                count++;
                txt_count.setText(""+count);
            }
        };
    }
     
    cs

     

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:id="@+id/activity_handler"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:paddingBottom="@dimen/activity_vertical_margin"
        android:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin"
        android:paddingTop="@dimen/activity_vertical_margin"
        tools:context="com.ssh.user.ex_1206.HandlerActivity"
        android:orientation="vertical">
     
        <TextView
            android:id="@+id/txt_count"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:text="0"
            android:textSize="30dp"
            android:layout_weight="1"
            android:gravity="center" />
     
        <Button
            android:id="@+id/btn_start"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="start"/>
     
        <Button
            android:id="@+id/btn_stop"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="stop"/>
     
     
     
    </LinearLayout>
     
    cs

     



    3. Exit


     Sample Source

     

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    package com.ssh.user.ex_1206;
     
    import android.os.Bundle;
    import android.os.Handler;
    import android.os.Message;
    import android.support.v7.app.AppCompatActivity;
    import android.widget.Toast;
     
    public class ExitActivity extends AppCompatActivity {
     
        int timeCount = 0;
     
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_exit);
        }
     
        @Override
        public void onBackPressed() {
     
            if(timeCount == 0) {
                handler.sendEmptyMessage(0);
                Toast.makeText(getApplicationContext(), "한번더 누르시면 종료됩니다.", Toast.LENGTH_SHORT).show();
            }
            else
                finish();
        }
     
        Handler handler = new Handler()
        {
            @Override
            public void handleMessage(Message msg) {
     
                handler.sendEmptyMessageDelayed(0, 1000);
                timeCount++;
     
                if(timeCount >= 3) {
                    timeCount = 0;
                    handler.removeMessages(0);
                }
            }
        };
     
    }
     
    cs

     




    댓글

Designed by Tistory.