xml 도형 객체 만들기 1
1. XML로 도형 객체 만들기
activity_main.xml
<?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">
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="126dp"
android:layout_marginTop="158dp"
android:background="@drawable/back_image"
android:text="도형객체 예제 알아보기"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
back_image.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners
android:radius="4dp" />
<gradient
android:startColor="#ff0000"
android:endColor="#00f0ff" />
<stroke
android:width="4dp" />
</shape>
activity_main.xml의 버튼의 속성에서 Common Attributes → background를 back_image.xml로 선택한다.
2. 애니메이션 효과 주기
MainActivity.java
package com.example.myapplication;
import android.os.Bundle;
import android.transition.Slide;
import android.transition.TransitionManager;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.LinearLayout;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
private LinearLayout linearlL;
private Button btn1;
private ImageView imgView;
private boolean visible = true;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
linearlL = (LinearLayout)findViewById(R.id.linear1);
btn1 = (Button)findViewById(R.id.button);
imgView = (ImageView)findViewById(R.id.imageView);
btn1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
TransitionManager.beginDelayedTransition(linearlL, new Slide()); // Fade, Slide, Explode
visible = !visible;
imgView.setVisibility(visible? View.VISIBLE: View.GONE);
}
});
}
}
activity_main.xml
<?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">
<LinearLayout
android:id="@+id/linear1"
android:layout_width="0dp"
android:layout_height="0dp"
android:orientation="vertical"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<Button
android:id="@+id/button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="TransitionAPI" />
<ImageView
android:id="@+id/imageView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:srcCompat="@drawable/cats" />
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
xml 도형 객체 만들기 2
MainActivity.java
package com.example.myapplication;
import android.graphics.drawable.AnimationDrawable;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
AnimationDrawable arrow_animation;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button myBtn = (Button)findViewById(R.id.button);
ImageView myImgView = (ImageView)findViewById(R.id.imageView);
myImgView.setBackgroundResource(R.drawable.arrow_ani);
arrow_animation = (AnimationDrawable)myImgView.getBackground();
myBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
arrow_animation.start();
}
});
}
}
activity_main.xml
<?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">
<LinearLayout
android:id="@+id/linear1"
android:layout_width="0dp"
android:layout_height="0dp"
android:orientation="vertical"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<TextView
android:id="@+id/textView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="drawable animation test" />
<Button
android:id="@+id/button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="애니 시작" />
<ImageView
android:id="@+id/imageView"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
arrow_ani.xml
<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
android:oneshot="true">
<item
android:drawable="@drawable/arrow1"
android:duration="1000" />
<item
android:drawable="@drawable/arrow2"
android:duration="1000" />
<item
android:drawable="@drawable/arrow3"
android:duration="1000" />
<item
android:drawable="@drawable/arrow4"
android:duration="1000" />
</animation-list>
'안드로이드 Android' 카테고리의 다른 글
[모바일프로그래밍] 8-2 명시적 인텐트 (0) | 2020.10.28 |
---|---|
[모바일프로그래밍] 7-5 서피스 뷰 (0) | 2020.10.16 |
[모바일프로그래밍] 7-3 이미지 처리 (0) | 2020.10.16 |
[모바일프로그래밍] 7-2 터치이벤트와의 연결 (0) | 2020.10.16 |
[모바일프로그래밍] 7-1 안드로이드에서의 그래픽 (0) | 2020.10.15 |