반응형
| follow me
설명 : 화면을 터치하고 움직이면 이미지가 따라오는 앱 개발
어플리케이션 이름은 Follow Me
어플리케이션 라벨은 나를 따라와1
Activity_main.xml에서 화면을 절대 좌표로 설정한다
Mainactivity.java는 터치 시에 아이콘이 터치 위치를 따라오도록 한다.
androidManifest.xml에는 스마트폰이 진동이 가능하도록 환경을 설정한다.
| String.xml
<resources>
<string name="app_name">나를 따라와</string>
</resources>
| Activity_main.xml
?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
<!--이미지뷰의 소스를 drawable 폴더에 있는 "smile.png"로 지정-->
android:src="@drawable/smile"
<!--이미지 뷰의 id를 "smile"로 지정함-->
android:id="@+id/smile" />
</RelativeLayout>
| Mainactivity.java
package com.example.followme;
import android.animation.ObjectAnimator;
import android.content.Context;
import android.os.Vibrator;
import android.support.v4.app.FragmentActivity;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.WindowManager;
import android.widget.ImageView;
/*화면 상단에 상태 바(status bar)와 앱 바(app bar)가 나타나지 않는 full screen으로 만들기 위해 appcompatactivity를 수정함*/
public class MainActivity extends FragmentActivity{
//이미지, xy 좌표, 진동 선언
ImageView iv_smile;
float previous_x = 0;
float previous_y = 0;
Vibrator mVibe;
@Override
/*메인 액티비티 자바 클래스가 호출될 때 처음 실행되는 메소드*/
protected void onCreate(Bundle savedInstanceState) {
/*액티비티 생성*/
super.onCreate(savedInstanceState);
/*activity_main.xml에서 정의된 화면 레이아웃을 액티비티에 출력*/
setContentView(R.layout.activity_main);
/*화면을 full screenㅇ로 만듬*/
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
/*id가 "smile'인 이미지를 인식함*/
iv_smile=(ImageView)findViewById(R.id.smile);
mVibe = (Vibrator)getSystemService(Context.VIBRATOR_SERVICE);
}
/*터치 시에 시스템에 의해 호출됨*/
public boolean onTouchEvent(MotionEvent event){
switch(event.getAction()){
/*누르기 시작하는 상태일 때*/
case MotionEvent.ACTION_DOWN:
break;
/*터치하고 움직이는 상태일 때*/
case MotionEvent.ACTION_MOVE:
/*터치하고 있는 x,y 위치 인식*/
int touch_x = (int)event.getX();
int touch_y = (int)event.getY();
ObjectAnimator smileX = ObjectAnimator.ofFloat(iv_smile, "translationX", previous_x, touch_x);
smileX.start();
ObjectAnimator smileY = ObjectAnimator.ofFloat(iv_smile, "translationY", previous_y, touch_x);
smileY.start();
/*50 밀리 초 동안 진동*/
previous_x = touch_x;
previous_y = touch_y;
break;
/*터치 후 손을 떼는 상태일 때*/
case MotionEvent.ACTION_UP:
break;
}
return false;
}
}
| AndoridManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.followme">
<!--진동이 가능한 상태로 함-->
<uses-permission android:name="android.permission.VIBRATE"/>
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
<!--어플리케이션 라벨-->
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<!--어플리케이션을 구성하는 액티비티 자바 클래스-->
<activity android:name=".MainActivity">
<!--앱 실행 시, MainActivity 자바 클래스가 처음 실행됨-->
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
| 결과
[관련 게시글]
[Android] 안드로이드 스튜디오 설치 : https://seul96.tistory.com/58 [Android] 바람개비 회전 애니메이션 : https://seul96.tistory.com/62 [Android] 화면터치 시 이미지 따라오기 : https://seul96.tistory.com/310 [Android] 그림 글 배치 : https://seul96.tistory.com/63 [Android] 글의 목록 만들기 : https://seul96.tistory.com/311 [Android] manifests, java, res / 레이아웃 유형 : https://seul96.tistory.com/64 [Android] toast 배경색 변경 방법 + 색상표 : https://seul96.tistory.com/65 [Android] 계산기 구현 : https://seul96.tistory.com/66 [Android] 위치 배열 gravity linear layout relative layout 사용 : https://seul96.tistory.com/67 [Android] 액티비티 전환 intent 예시 + 4대 컴포넌트 : https://seul96.tistory.com/68 [Android] 이벤트 처리와 액티비티간 이동 : https://seul96.tistory.com/70 [Android] 리스트뷰 : https://seul96.tistory.com/79 [Android] 커스텀 리스트뷰 : https://seul96.tistory.com/80 [Android] 안드로이드 공공데이터(API) 사용하는 방법 : https://seul96.tistory.com/85 [Android] Padding/layout_margin, visibility 속성 : https://seul96.tistory.com/312 |
반응형
'JAVA > Android' 카테고리의 다른 글
[Android] Padding/layout_margin, visibility 속성 (0) | 2021.09.16 |
---|---|
[Android] 명화의 목록 만들기 (0) | 2021.09.16 |
안드로이드 개발 - 공공데이터 사용(API) (0) | 2019.06.08 |
[Android] Custom Listview 사용 (0) | 2019.06.02 |
[Android] - 리스트뷰(listview) (0) | 2019.06.02 |
댓글