728x90
반응형
package com.threedpit.myevent;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView = findViewById(R.id.textView);
View view = findViewById(R.id.view);
view.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
/**
* onTouch라는 매소드는 뷰를 클릭 했을 떄 사용
* 손으로 누르거나 떼거나 움직이는 경우
* 여기서는 모션 이벤트의 객체로
* */
int action = event.getAction();
float curX = event.getX();
float curY = event.getY();
if(action == MotionEvent.ACTION_DOWN){ /**클릭 했을때*/
println("손가락 눌림 : " + curX + curY);
}else if(action==MotionEvent.ACTION_MOVE){/**움직였을때 */
println("손가락 움직임 : " + curX + curY);
}else if(action==MotionEvent.ACTION_UP){/**클릭을 땠을때*/
println("손가락 뗌 : " + curX + curY);
}
return true; /**onTouch 라는 함수가 정상으로 동작했다*/
}
});
}
public void println(String data){
textView.append(data+"\n");
}
}
package com.threedpit.myevent;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.GestureDetector;
import android.view.MotionEvent;
import android.view.View;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
TextView textView;
/**추가 한 부분--------------------------------------------*/
GestureDetector detector;
/**추가 한 부분--------------------------------------------*/
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView = findViewById(R.id.textView);
View view = findViewById(R.id.view);
view.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
/**
* onTouch라는 매소드는 뷰를 클릭 했을 떄 사용
* 손으로 누르거나 떼거나 움직이는 경우
* 여기서는 모션 이벤트의 객체로
* */
int action = event.getAction();
float curX = event.getX();
float curY = event.getY();
if(action == MotionEvent.ACTION_DOWN){ /**클릭 했을때*/
println("손가락 눌림 : " + curX + curY);
}else if(action==MotionEvent.ACTION_MOVE){/**움직였을때 */
println("손가락 움직임 : " + curX + curY);
}else if(action==MotionEvent.ACTION_UP){/**클릭을 땠을때*/
println("손가락 뗌 : " + curX + curY);
}
return true; /**onTouch 라는 함수가 정상으로 동작했다*/
}
});
/**추가 한 부분--------------------------------------------*/
detector = new GestureDetector(this, new GestureDetector.OnGestureListener() {
@Override
public boolean onDown(MotionEvent e) {
println("onDwon호출됨");
return true;
}
@Override
public void onShowPress(MotionEvent e) {
}
@Override
public boolean onSingleTapUp(MotionEvent e) {
return false;
}
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
return false;
}
@Override
public void onLongPress(MotionEvent e) {
println("onLongPtess 호출됨");
}
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
println("onFling 호출됨"+velocityX+" , " +velocityY);
return true;
}
});
View view2 = findViewById(R.id.view2);
view2.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
detector.onTouchEvent(event);
return true;
}
});
/**추가 한 부분--------------------------------------------*/
}
public void println(String data){
textView.append(data+"\n");
}
}
텍스트만 가로방향으로 바꿔주자.
package com.threedpit.myorientation;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
showToast("onCreate 호출");
}
@Override
protected void onDestroy() {
showToast("onDestory 호출");
super.onDestroy();
}
public void showToast(String data){
Toast.makeText(this,data,Toast.LENGTH_SHORT).show();
}
}
대게 생명주기를 알고 있으면 쉽다. 정말 면접에서도 많이 물어볼 수 있습니다.
안드로이드에 입문했거나 한다면....
package com.threedpit.myorientation;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.os.PersistableBundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
String name;
EditText editText;
TextView textView2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
showToast("onCreate 호출");
editText = findViewById(R.id.editText);
textView2 = findViewById(R.id.textView2);
Button btn = findViewById(R.id.button);
if(btn!=null) {
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (editText != null) {
/**editText안에 문자가 들어가 있으면*/
name = editText.getText().toString();
/**editText안의 문자를
* 문자열로 바꿔서 name 스트링 변수에
* 넣는다.*/
showToast("사용자 입력값을 name 변수에 활당함");
}
}
});
}
/**protected void onCreate(Bundle savedInstanceState) {
* 이부분을 보면 savedInstanceState 라는 변수가 있다.
* public void onSaveInstanceState(@NonNull Bundle outState) {
* 여기의 이 번들 객체와 같다라고 생각하면된다.
*
*/
if(savedInstanceState!=null){
if(textView2!=null){
name =savedInstanceState.getString("name");
/**이 번들 즉 savedInstanceState의 데이터를 빼달라는 함수*/
textView2.setText(name);
showToast("값을 복원했다."+ name);
}
}
}
@Override
public void onSaveInstanceState(@NonNull Bundle outState) {
super.onSaveInstanceState(outState);
/**번들은 어떤 데이터들을 담아주느것이라고 생각하자*/
outState.putString("name",name);
/**액티비티가 화면상에 없어지는 순간에
* 이 함수가 호출되면서 이데이터가 어디에
* 저장되는것이다.
* 어떻게 보관하는가?...
* */
}
@Override
protected void onDestroy() {
showToast("onDestory 호출");
super.onDestroy();
}
public void showToast(String data){
Toast.makeText(this,data,Toast.LENGTH_SHORT).show();
}
}
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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"
android:background="#555DDF"
>
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="세로방향"
android:textColor="#FF0000"
android:textSize="50sp"
tools:layout_editor_absoluteX="113dp"
tools:layout_editor_absoluteY="32dp"
/>
<EditText
android:id="@+id/editText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="72dp"
android:ems="10"
android:inputType="textPersonName"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.424"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView" />
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="60dp"
android:text="확인"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.421"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/editText" />
</androidx.constraintlayout.widget.ConstraintLayout>
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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"
android:background="#555DDF"
>
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="세로방향"
android:textColor="#FF0000"
android:textSize="50sp"
tools:layout_editor_absoluteX="113dp"
tools:layout_editor_absoluteY="32dp"
/>
<EditText
android:id="@+id/editText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="72dp"
android:ems="10"
android:inputType="textPersonName"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.424"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView" />
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="60dp"
android:text="확인"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.421"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/editText" />
</androidx.constraintlayout.widget.ConstraintLayout>
package com.threedpit.myorientaion2;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import android.content.res.Configuration;
import android.os.Bundle;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public void onConfigurationChanged(@NonNull Configuration newConfig) {
super.onConfigurationChanged(newConfig);
if(newConfig.orientation==Configuration.ORIENTATION_LANDSCAPE){
/**위의 소스를 통해 위가 가로 방향인지 확인을 할 수 있다. */
showToast("가로방향임");
}else if(newConfig.orientation==Configuration.ORIENTATION_PORTRAIT){
/**위의 소스를 통해 위가 세로 방향인지 확인을 할 수 있다. */
showToast("세로방향임");
}
}
public void showToast(String data){
Toast.makeText(this, data,Toast.LENGTH_SHORT).show();
}
}
저 부분을 잘 처리해주면 고정이 됩니다.
728x90
반응형
'안드로이드(Android)' 카테고리의 다른 글
안드로이드 이론 빡공 6 (0) | 2020.06.11 |
---|---|
안드로이드 이론빡공 5 (0) | 2020.06.10 |
안드로이드 이론빡공 3 (0) | 2020.06.09 |
안드로이드 이론빡공 2 (0) | 2020.06.09 |
안드로이드 이론빡공 1 (0) | 2020.06.09 |
댓글