안드로이드

 

 

 

 

 

 

 

 

 

 

 

 

 

class MainActivity

package org.androidtown.myevent;

import android.content.res.Configuration;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.GestureDetector;
import android.view.MotionEvent;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

    TextView textView ;
    GestureDetector detector;

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


        textView=(TextView)findViewById(R.id.textView2);


        Button button=(Button)findViewById(R.id.button);

/*
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                textView.setText("버튼이 클릭 되었습니다.");
            }
        });
*/


        button.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {

                if(event.getAction()==MotionEvent.ACTION_DOWN){
                    textView.setText("손가락이 눌렀습니다.");
                }else if(event.getAction()==MotionEvent.ACTION_UP){
                    textView.setText("손가락이 떼졌습니다.");
                }
                return true;
            }
        });


        //제스처 이벤트 객체 생성
        detector=new GestureDetector(this, new GestureDetector.SimpleOnGestureListener(){

            @Override
            public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
                textView.setText("onScroll() 호출됨 :" + distanceX + ", " + distanceY);
                return super.onScroll(e1, e2, distanceX, distanceY);
            }

            @Override
            public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
                 textView.setText("onFling() 호출됨 :" + velocityX +", " +velocityY);

                return super.onFling(e1, e2, velocityX, velocityY);
            }
        });


    }


    @Override
    public boolean onTouchEvent(MotionEvent event) {
        if(detector!=null){
            //화면을 터치 했을 경우 제스처 이벤트 실행
            return detector.onTouchEvent(event);
        }else{
            return super.onTouchEvent(event);
        }


    }



    //화면 뒤로가기 백키를 실행 했을 경우
    @Override
    public void onBackPressed() {
        Toast.makeText(getApplicationContext(), "onBackPressed() 호출됨.", Toast.LENGTH_SHORT).show();
        return;
    }


    //메니페스트해서 설정
/*
    <activity
    android:name=".MainActivity"
    android:label="MyEvent"
    android:configChanges="orientation|screenSize|keyboardHidden"
            >
*/
    //스마트 폰 방향 전환
    @Override
    public void onConfigurationChanged(Configuration newConfig) {
        if(newConfig.orientation== Configuration.ORIENTATION_LANDSCAPE){
            Toast.makeText(getApplicationContext(), "가로방향으로 돌아감", Toast.LENGTH_SHORT).show();
        }else if(newConfig.orientation==Configuration.ORIENTATION_PORTRAIT){
            Toast.makeText(getApplicationContext(), "세로방향으로 돌아감", Toast.LENGTH_SHORT).show();
        }
        super.onConfigurationChanged(newConfig);
    }



    public void onButton1Clicked(View v){

    }





}

 

R.layout.activity_main

<?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_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="org.androidtown.myevent.MainActivity">


    <org.androidtown.myevent.MyView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_below="@+id/textView2"
        android:background="#ffeeccff"
        />

    <Button
        android:text="시작"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="27dp"
        android:id="@+id/button"
        android:onClick="onButton1Clicked"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true" />

    <TextView
        android:text="결과"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="44dp"
        android:id="@+id/textView2"
        android:textSize="30sp"
        android:layout_below="@+id/button"
        android:layout_centerHorizontal="true" />


</RelativeLayout>

 

 

class MyView

package org.androidtown.myevent;

import android.content.Context;
import android.util.AttributeSet;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;

/**
 * Created by choi on 2017-04-03.
 */

public class MyView extends View{

    private final static String TAG ="MyView";



    public MyView(Context context) {
        super(context);
    }

    public MyView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }


    @Override
    public boolean onTouchEvent(MotionEvent event) {

        if(event.getAction()==MotionEvent.ACTION_DOWN){
            Log.d(TAG, "손가락이 눌렀습니다.");
        }else if(event.getAction()==MotionEvent.ACTION_UP){
            Log.d(TAG, "손가락이 떼졌습니다.");
        }else if(event.getAction()==MotionEvent.ACTION_MOVE){
            Log.d(TAG, "손가락이 움직입니다.");
        }
        return true;
    }





}






 

AndroidMainfest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="org.androidtown.myevent">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity
            android:name=".MainActivity"
            android:label="MyEvent"
            android:configChanges="orientation|screenSize|keyboardHidden"
            >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

 

이벤트 처리

 


        button.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {

                if(event.getAction()==MotionEvent.ACTION_DOWN){
                    textView.setText("손가락이 눌렀습니다.");
                }else if(event.getAction()==MotionEvent.ACTION_UP){
                    textView.setText("손가락이 떼졌습니다.");
                }
                return true;
            }
        });

 

 

 

제스처 이벤트

      GestureDetector detector;

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





    //제스처 이벤트 객체 생성
        detector=new GestureDetector(this, new GestureDetector.SimpleOnGestureListener(){

            @Override
            public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
                textView.setText("onScroll() 호출됨 :" + distanceX + ", " + distanceY);
                return super.onScroll(e1, e2, distanceX, distanceY);
            }

            @Override
            public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
                 textView.setText("onFling() 호출됨 :" + velocityX +", " +velocityY);

                return super.onFling(e1, e2, velocityX, velocityY);
            }
        });


    }


    @Override
    public boolean onTouchEvent(MotionEvent event) {
        if(detector!=null){
            //화면을 터치 했을 경우 제스처 이벤트 실행
            return detector.onTouchEvent(event);
        }else{
            return super.onTouchEvent(event);
        }


    }

 

 

터치 이벤트  View 상속

class MyView
package org.androidtown.myevent;

import android.content.Context;
import android.util.AttributeSet;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;

/**
 * Created by choi on 2017-04-03.
 */

public class MyView extends View{

    private final static String TAG ="MyView";



    public MyView(Context context) {
        super(context);
    }

    public MyView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }


    @Override
    public boolean onTouchEvent(MotionEvent event) {

        if(event.getAction()==MotionEvent.ACTION_DOWN){
            Log.d(TAG, "손가락이 눌렀습니다.");
        }else if(event.getAction()==MotionEvent.ACTION_UP){
            Log.d(TAG, "손가락이 떼졌습니다.");
        }else if(event.getAction()==MotionEvent.ACTION_MOVE){
            Log.d(TAG, "손가락이 움직입니다.");
        }
        return true;
    }





}






 

배경화면 연보라


    <org.androidtown.myevent.MyView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_below="@+id/textView2"
        android:background="#ffeeccff"
        />

 

 

= > 로그 출력

 

04-03 05:24:01.131 15899-15899/org.androidtown.myevent D/MyView: 손가락이 눌렀습니다.
04-03 05:24:01.226 15899-15899/org.androidtown.myevent D/MyView: 손가락이 떼졌습니다.
04-03 05:24:02.187 15899-15899/org.androidtown.myevent D/MyView: 손가락이 눌렀습니다.
04-03 05:24:02.208 15899-15899/org.androidtown.myevent D/MyView: 손가락이 움직입니다.
04-03 05:24:02.225 15899-15899/org.androidtown.myevent D/MyView: 손가락이 움직입니다.
04-03 05:24:02.242 15899-15899/org.androidtown.myevent D/MyView: 손가락이 움직입니다.
04-03 05:24:02.258 15899-15899/org.androidtown.myevent D/MyView: 손가락이 움직입니다.
04-03 05:24:02.275 15899-15899/org.androidtown.myevent D/MyView: 손가락이 움직입니다.
04-03 05:24:02.292 15899-15899/org.androidtown.myevent D/MyView: 손가락이 움직입니다.
04-03 05:24:02.308 15899-15899/org.androidtown.myevent D/MyView: 손가락이 움직입니다.
04-03 05:24:02.325 15899-15899/org.androidtown.myevent D/MyView: 손가락이 움직입니다.
04-03 05:24:02.342 15899-15899/org.androidtown.myevent D/MyView: 손가락이 움직입니다.
04-03 05:24:02.358 15899-15899/org.androidtown.myevent D/MyView: 손가락이 움직입니다.
04-03 05:24:02.375 15899-15899/org.androidtown.myevent D/MyView: 손가락이 움직입니다.
04-03 05:24:02.458 15899-15899/org.androidtown.myevent D/MyView: 손가락이 움직입니다.
04-03 05:24:02.475 15899-15899/org.androidtown.myevent D/MyView: 손가락이 움직입니다.
04-03 05:24:02.492 15899-15899/org.androidtown.myevent D/MyView: 손가락이 움직입니다.
04-03 05:24:02.509 15899-15899/org.androidtown.myevent D/MyView: 손가락이 움직입니다.
04-03 05:24:02.525 15899-15899/org.androidtown.myevent D/MyView: 손가락이 움직입니다.
04-03 05:24:02.543 15899-15899/org.androidtown.myevent D/MyView: 손가락이 움직입니다.
04-03 05:24:02.559 15899-15899/org.androidtown.myevent D/MyView: 손가락이 움직입니다.
04-03 05:24:02.575 15899-15899/org.androidtown.myevent D/MyView: 손가락이 움직입니다.
04-03 05:24:02.592 15899-15899/org.androidtown.myevent D/MyView: 손가락이 움직입니다.
04-03 05:24:02.609 15899-15899/org.androidtown.myevent D/MyView: 손가락이 움직입니다.
04-03 05:24:02.659 15899-15899/org.androidtown.myevent D/MyView: 손가락이 움직입니다.
04-03 05:24:02.692 15899-15899/org.androidtown.myevent D/MyView: 손가락이 떼졌습니다.
04-03 07:07:48.966 7689-7689/org.androidtown.myevent D/MyView: 손가락이 눌렀습니다.
04-03 07:07:48.966 7689-7689/org.androidtown.myevent D/MyView: 손가락이 움직입니다.

 

 

 

화면 뒤로가기 백키를 실행 했을 경우

 

   //화면 뒤로가기 백키를 실행 했을 경우
    @Override
    public void onBackPressed() {
        Toast.makeText(getApplicationContext(), "onBackPressed() 호출됨.", Toast.LENGTH_SHORT).show();
        return;
    }

 

 

 

화면 방향 전환(가로, 세로 )

 

 

 

AndroidMainfest.xml

추가

   android:configChanges="orientation|screenSize|keyboardHidden"
        <activity
            android:name=".MainActivity"
            android:label="MyEvent"
            android:configChanges="orientation|screenSize|keyboardHidden"
            >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

 


    //메니페스트해서 설정
/*
    <activity
    android:name=".MainActivity"
    android:label="MyEvent"
    android:configChanges="orientation|screenSize|keyboardHidden"
            >
*/
    //스마트 폰 방향 전환
    @Override
    public void onConfigurationChanged(Configuration newConfig) {
        if(newConfig.orientation== Configuration.ORIENTATION_LANDSCAPE){
            Toast.makeText(getApplicationContext(), "가로방향으로 돌아감", Toast.LENGTH_SHORT).show();
        }else if(newConfig.orientation==Configuration.ORIENTATION_PORTRAIT){
            Toast.makeText(getApplicationContext(), "세로방향으로 돌아감", Toast.LENGTH_SHORT).show();
        }
        super.onConfigurationChanged(newConfig);
    }

 

 

38강

 

39강

 

40강

 

41강

 

 

about author

PHRASE

Level 60  머나먼나라

비이소사(匪夷所思). 범상한 생각으로는 되지 않는다. 변해서 상식이라고는 생각할 수 없다는 말로 되었음. 이(夷)는 상(常)과 같음. -역경

댓글 ( 4)

댓글 남기기

작성