-
[안드로이드] 수직 progressbar 만들기안드로이드(java)/UI 관련 2019. 9. 7. 18:19
일반적으로는 progressbar를 만들 때 원형 또는 가로로 사용하는데요.
아~~~주 가끔씩 세로로 보여줘야 할 때도 생기는것 같습니다.
안드로이드에서 제공하는 progressbar가 기본적으로는 가로만 지원하네요.
찾아보니까 거의 대부분의 글들이 커스텀 해서 사용하는것 같아서 조금 더 쉽게 적용할 수 있는 방법은 없을까 하다가
쉽게 적용할 수 있는 방법이 있는것 같아서 글을 남겨봅니다.
세로로 progressbar를 놓고 버튼을 눌렀을 때 0.1초에 한 번씩 1씩 증가하도록 만들었습니다.
<activity_main.xml>
1234567891011121314151617181920212223242526272829303132333435<?xml version="1.0" encoding="utf-8"?><LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"xmlns:app="http://schemas.android.com/apk/res-auto"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MainActivity"android:orientation="vertical"><ProgressBarandroid:id="@+id/progressbar"android:layout_width="200dp"android:layout_height="wrap_content"android:layout_marginTop="100dp"style="@android:style/Widget.ProgressBar.Horizontal"android:rotation="270"
android:progress="0"android:max="100"/><TextViewandroid:id="@+id/tv"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="test"android:textSize="30sp"android:textColor="#000"/><Buttonandroid:id="@+id/btn"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="start!"/></LinearLayout>cs progressbar 속성중에 빨간색으로 나타낸 rotation 속성에 값을 270으로 넣어줍니다. 이건 돌려줄 각도를 나타냅니다.
marginTop을 넣지않으면 progressbar 상단이 잘려나오게 되어서 marginTop을 넣어주었습니다.
<MainActivity.java>
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465package com.example.verticalprogressbarpractice;import androidx.appcompat.app.AppCompatActivity;import android.os.Bundle;import android.os.Handler;import android.view.View;import android.widget.Button;import android.widget.ProgressBar;import android.widget.TextView;public class MainActivity extends AppCompatActivity {ProgressBar pgb;TextView tv;Button btn;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);btn = findViewById(R.id.btn);tv = findViewById(R.id.tv);pgb = findViewById(R.id.progressbar);pgb.setProgress(0);pgb.setMax(100);btn.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {progress();}});}public void progress() {new Thread(new Runnable() {@Overridepublic void run() {for (int i = 0; i <= 100; i++) {try {Thread.sleep(100);} catch (InterruptedException e) {e.printStackTrace();}final int percent = i;tv.post(new Runnable() {@Overridepublic void run() {pgb.setProgress(percent);tv.setText(percent+"%");if (percent == 100) {tv.setText("완료!!");}}});}}}).start();}}cs 간단한 예제입니다. 이렇게 입력하시고 안드로이드 에뮬레이터를 실행하시면 아래 영상처럼 동작됨을 보실 수 있습니다.
간단한거지만 도움이 되었으면 좋겠습니다.
<결과 화면>
'안드로이드(java) > UI 관련' 카테고리의 다른 글
[안드로이드] ui 단위별 값 및 단말기 해당도에 따른 분류 (0) 2020.01.16 [안드로이드] progressbar 색상 변경하기 (0) 2019.09.25 [안드로이드] 안드로이드 activity 종료 애니메이션 없애거나 넣기 (0) 2019.09.06 [안드로이드] 슬라이딩 레이아웃 만들기 (0) 2019.08.13 [안드로이드] 화면 고정, 세로 화면, 가로 화면 설정하기 (0) 2019.05.25