<?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"
    android:orientation="vertical"  //같은 이름으로 xml만들고 horizontal 설정한 파일만들면 가로파일임
    android:padding="15dp"
    >

    <ImageView
        android:layout_width="match_parent"
        android:layout_height="175dp"
        android:src="@drawable/msgicon"
        />
    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="@string/intro_main"
        android:textSize="20dp"
        android:gravity="center_horizontal"
        android:layout_marginTop="200dp"/>
    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="@string/intro_learn"
        android:textSize="20dp"
        android:gravity="center_horizontal"
        android:textColor="#111111"
        android:layout_marginTop="230dp"/>


    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="@string/intro_setting"
        android:layout_alignParentBottom="true"
        android:layout_marginBottom="50dp"
        android:background="@drawable/btn_round"
        />

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:background="@drawable/btn_round"
        android:text="@string/intro_notnow"
        />

</RelativeLayout>

 

'실습' 카테고리의 다른 글

안드로이드, stopwatch  (0) 2022.04.22
안드로이드, 로그인 레이아웃 구현  (0) 2022.04.21
<?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">
    <Chronometer
        android:id="@+id/chronometer"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="150dp"
        android:gravity="center_horizontal"
        android:textSize="60dp"
        />
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center_horizontal"
        android:orientation="horizontal"
        android:layout_alignParentBottom="true"
        android:layout_marginBottom="70dp">
        <Button
            android:id="@+id/startButton"
            android:layout_width="100dp"
            android:layout_height="wrap_content"
            android:text="Start"
            android:background="@drawable/round_button"
            android:textStyle="bold"/>
        <Button
            android:id="@+id/stopButton"
            android:layout_width="100dp"
            android:layout_height="wrap_content"
            android:text="Stop"
            android:background="@drawable/round_button"
            android:textStyle="bold"
            android:layout_marginLeft="25dp"
            android:enabled="false"/>
        <Button
            android:id="@+id/resetButton"
            android:layout_width="100dp"
            android:layout_height="wrap_content"
            android:text="Reset"
            android:background="@drawable/round_button"
            android:textStyle="bold"
            android:layout_marginLeft="25dp"
            android:enabled="false"/>

    </LinearLayout>

</RelativeLayout>

 

package com.example.stopwatch

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.os.SystemClock
import android.view.KeyEvent
import android.widget.Toast
import com.example.stopwatch.databinding.ActivityMainBinding

class MainActivity : AppCompatActivity() {

    var initTime=0L     //
    var pauseTime = 0L  //멈춘시간 초기값


    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        val binding = ActivityMainBinding.inflate(layoutInflater)	//바인딩
        setContentView(binding.root)

        binding.startButton.setOnClickListener{	//샘기법사용해 실행문작성
            binding.chronometer.base = SystemClock.elapsedRealtime()+pauseTime
            binding.chronometer.start() 
            binding.stopButton.isEnabled = true
            binding.resetButton.isEnabled = true
            binding.startButton.isEnabled = false
        }

        binding.stopButton.setOnClickListener{
            pauseTime = binding.chronometer.base - SystemClock.elapsedRealtime()
            binding.chronometer.stop()
            binding.stopButton.isEnabled = false
            binding.startButton.isEnabled = true
            binding.resetButton.isEnabled = true
        }

        binding.resetButton.setOnClickListener{
            pauseTime = 0L
            binding.chronometer.base = SystemClock.elapsedRealtime()
            binding.chronometer.stop()
            binding.stopButton.isEnabled = false
            binding.startButton.isEnabled = true
            binding.resetButton.isEnabled = false
        }
    }

    override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean {
        if(keyCode==KeyEvent.KEYCODE_BACK) {
            if (System.currentTimeMillis() - initTime>3000){
                Toast.makeText(this, "종료하려면 한번 더 누르세요!!",
                Toast.LENGTH_SHORT).show()
                initTime= System.currentTimeMillis()
                return true
            }
        }
        return super.onKeyDown(keyCode, event)
    }
}

 

 책으로 배우다보니,, 이해가 되는거보단 안 되는게 많다!!!

이거저거 바꿔가며 이해해보려 하는데

binding.chronometer.base = SystemClock.elapsedRealtime() 

SystemClock.elapsedRealtime() 은 시스템이 부팅된 시점부터 흐른 시간이라고 설명되어있는데

리셋시 어떻게 0으로 초기화가 되는지 이해가 안된다. 

그렇기에 start, stop도 전부 이해가 되지않는다

천천히 한번더 분석해봐야한다

 

 

 

'실습' 카테고리의 다른 글

안드로이드, 화면로테이트  (0) 2022.04.22
안드로이드, 로그인 레이아웃 구현  (0) 2022.04.21
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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:orientation="vertical"
    android:layout_marginVertical="15dp"
    android:padding="15dp"
    >


    <TextView
        android:layout_width="match_parent"
        android:layout_height="56dp"
        android:text="@string/main_desc"
        android:textSize="20dp"/>

    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="ex. abcd@naver.com"	//사용자가 작성시 사라지는 문구
        android:textSize="20dp"
        android:textColor="#534A4A" />
    
    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="PASSWORD"
        android:textSize="20dp"
        android:textColor="#534A4A"
        android:inputType="textPassword" />
 

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="@string/sub_desc"
        android:textSize="12dp" />

    <Button
        android:id="@+id/btn_login"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="로그인" />

</LinearLayout>

 

'실습' 카테고리의 다른 글

안드로이드, 화면로테이트  (0) 2022.04.22
안드로이드, stopwatch  (0) 2022.04.22

AutoCompleteTextView

java.lang.Object
  ↳ android.view.View
    ↳ android.widget.TextView
      ↳ android.widget.EditText
        ↳ android.widget.AutoCompleteTextView

EditText 속성에 자동완성 기능을 추가한뷰

몇 글자를 입력했을때 보여줄지를 지정하는 속성, 리스트형태로 보여줄 문자열이 미리 정의되어있어야함

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <AutoCompleteTextView
        android:id="@+id/edit"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:completionHint="pick an item"
        android:completionThreshold="2" />

</LinearLayout>

completionHint : 문자열 리스트 하단에 표시할 문자열

completionThreshold : 입력한 글자가 몇 글자일때 문자열 리스트를 보여줄지 지정

 

package com.androidside.autocompletetextviewdemoa1;

import android.app.Activity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView;

public class Main extends Activity {
    String[] items = { "SM3", "SM5", "SM7", "SONATA", "AVANTE", "SOUL", "K5",
            "K7" };

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        AutoCompleteTextView edit = (AutoCompleteTextView) findViewById(R.id.edit);

        edit.setAdapter(new ArrayAdapter<String>(this,
                android.R.layout.simple_dropdown_item_1line, items));
    }
}

자동완성시킬 문자열들은 ArrayAdapter를 사용해서 .java 에 설정

android.R.layout.simple_dropdown_item_1line : 문자열을 보여주는 리스트 모양

 

-----

MultiAutoCompleteTextView

java.lang.Object
  ↳ android.view.View
     ↳ android.widget.TextView
       ↳ android.widget.EditText
         ↳ android.widget.AutoCompleteTextView
           ↳ android.widget.MultiAutoCompleteTextView

여러개의 단어 완성

토크나이저 설정필요(쉼표로 단어구분)

<MultiAutoCompleteTextView
    android:id="@+id/edit"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:completionHint="pick an item"
    android:completionThreshold="2" />
import android.app.Activity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.MultiAutoCompleteTextView;

public class Main extends Activity {
    String[] items = { "SM3", "SM5", "SM7", "SONATA", "AVANTE", "SOUL", "K5",
            "K7" };

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        MultiAutoCompleteTextView edit = 
                (MultiAutoCompleteTextView) findViewById(R.id.edit);
        edit.setTokenizer(new MultiAutoCompleteTextView.CommaTokenizer());
        edit.setAdapter(new ArrayAdapter<String>(this,
                android.R.layout.simple_dropdown_item_1line, items));
    }
}

CommaTokenizer : 쉼표로 구분, 다른문자로 구분하고자한다면 만들어야함

 

https://www.acmicpc.net/problem/1931

 

1931번: 회의실 배정

(1,4), (5,7), (8,11), (12,14) 를 이용할 수 있다.

www.acmicpc.net

한시간 넘게 고민했다

어떤식으로 풀어나가야할지 감은 잡혔는데 재배열을 어떻게 해야하는지 몰라서 막혔다

comparator, comparable 은 내겐 없는 지식이었다..

30분정도만 고민하고 가닥이 잡히면 해답을 봐야할성 싶다

없는 지식은 문제로 익히는게 기억에 오래남는듯하여..

아래 글을 참조하였음

import java.lang.reflect.Array;
import java.util.Arrays;
import java.util.Comparator;
import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
        
	Scanner sc = new Scanner(System.in);
	int N = sc.nextInt();
	int[][] arr = new int[N][2];
	
	for (int i=0;i<N;i++) {
		for (int j=0;j<2;j++) {
		arr[i][j] = sc.nextInt();
		}
	}
	
//	for (int i=0;i<N;i++) {		위와 같으나 다르게 표현한 것
//		arr[i][0] = sc.nextInt();
//		arr[i][1] = sc.nextInt();
//	}
	Arrays.sort(arr, new Comparator<int[]>(){	//arr를 오버라이딩한 compare에 맞춰 재배열하겠다
		@Override
		public int compare(int[] o1, int[]o2) {
			if (o1[1]==o2[1]) {	//종료시간이 같으면
				return o1[0] - o2[0]; 	//시작시간이 빠른쪽이 먼저되게
			}
			return o1[1] - o2[1]; //종료시간이 빠른쪽이 먼저되게
		}
	});
	
	int count=0;
	int k=0;	
	for (int j=0;j<N;j++) {	
		if ( k<=(arr[j][0])) { 
				k=arr[j][1];
				count++;
		}
	}
	System.out.println(count);

	}
}

 

 

https://st-lab.tistory.com/145

 

'JAVA > Java 백준 문제풀이' 카테고리의 다른 글

자바, 백준 10162 전자레인지  (0) 2022.05.08
자바, 백준 5585 거스름돈  (0) 2022.05.05
자바, 백준 11047  (0) 2022.04.07
자바, 백준 11399  (0) 2022.04.06
자바, 백준 2839  (0) 2022.04.05

+ Recent posts