상세 컨텐츠

본문 제목

[안드로이드]TextSwitcher 글자변환 애니메이션 만들어보기

안드로이드

by aries574 2020. 12. 18. 20:38

본문


2020/12/17 - [안드로이드] - [안드로이드]화면계속켜짐 상태로 만들어보기 FLAG_KEEP_SCREEN_ON


이번 시간에는 글자변환에 애니메이션 효과를 쉽게 해주는 TextSwitcher를 이용해서 

글자변환 애니메이션을 만들어보겠습니다.

양쪽에 버튼이 있고, 중간에 TextSwitcher가 있습니다.

왼쪽버튼은 이전값으로 오른쪽은 앞쪽 값으로 변경이 되는 기능을 가졌습니다.


1. 화면구현(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"
android:orientation="horizontal"
tools:context=".MainActivity">


<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_alignParentBottom="true"
android:layout_centerVertical="true"
android:layout_marginStart="3dp"
android:layout_marginBottom="295dp"
android:orientation="horizontal">

<Button
android:id="@+id/backBtn"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:text="이전" />

<TextSwitcher
android:id="@+id/textSwitcher"
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_margin="80dp"
android:inAnimation="@android:anim/slide_in_left"
/>

<Button
android:id="@+id/nextBtn"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:text="다음" />

</LinearLayout>

</RelativeLayout>


2.기능구현(MainActivity.java)


import androidx.appcompat.app.AppCompatActivity;
import android.graphics.Color;
import android.os.Bundle;
import android.view.Gravity;
import android.view.View;
import android.widget.Button;
import android.widget.TextSwitcher;
import android.widget.TextView;
import android.widget.ViewSwitcher;

public class MainActivity extends AppCompatActivity {

private TextSwitcher textSwitcher;
private Button nextButton;
private Button backButton;
private int stringIndex = 0;
private String[] row = {"1", "2", "3", "4", "5", "6"};
private TextView textView;

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

textSwitcher = findViewById(R.id.textSwitcher);
nextButton = findViewById(R.id.nextBtn);
backButton = findViewById(R.id.backBtn);

//이전 버튼 클릭 리스너
backButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {

//배열이 첫번째이면 마지막값 가져온다
if(stringIndex == 0){
stringIndex = row.length -1;
textSwitcher.setText(row[stringIndex]);

}else{ //아니면 이전값 셋팅
textSwitcher.setText(row[--stringIndex]);
}
}
});

//다음 버튼 클릭 리스너
nextButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {

//배열이 마지막이면 초기화
if(stringIndex == row.length -1){
stringIndex = 0;
textSwitcher.setText(row[stringIndex]);

}else{ //아니면 다음 값을 셋팅
textSwitcher.setText(row[++stringIndex]);
}
}
});

//텍스트스위쳐 기본 뷰 생성
textSwitcher.setFactory(new ViewSwitcher.ViewFactory() {
@Override
public View makeView() {

textView = new TextView(MainActivity.this);
textView.setTextColor(Color.BLACK); //색상설정
textView.setTextSize(60);//글씨크기 설정
textView.setGravity(Gravity.CENTER_HORIZONTAL); //위치설정
return textView;
}
});

//배열 첫번째 값 셋팅
textSwitcher.setText(row[stringIndex]);
}
}


3.실행화면


반응형

관련글 더보기

댓글 영역