๊ด€๋ฆฌ ๋ฉ”๋‰ด

Welcome! Everything is fine.

[TIL] 220112 ๋ณธ๋ฌธ

TIL

[TIL] 220112

๊ฐœ๋ฐœ๊ณฐ๋ฐœ 2022. 1. 12.
728x90

๐Ÿ’ป Today I Leaned...

๐Ÿ“Œ ์•ˆ๋“œ๋กœ์ด๋“œ ์ž…๋ฌธ

์ด๋ฏธ์ง€ ๋ณด์—ฌ์ฃผ๊ธฐ

Bitmap์€ ์ด๋ฏธ์ง€๋ฅผ ๋ถˆ๋Ÿฌ์˜ฌ ์ˆ˜ ์žˆ๋Š” ๊ฐ์ฒด์ด๋‹ค. ์•„๋ž˜ ์ฝ”๋“œ์—์„œ๋Š” ์ƒ๋žตํ–ˆ์ง€๋งŒ ์ด๋ ‡๊ฒŒ import๋ฅผ ํ•ด์•ผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

import android.graphics.Bitmap;

์‚ฌ์šฉํ•  ์ด๋ฏธ์ง€๋ฅผ drawable ํด๋”์— ๋„ฃ์œผ๋ฉด R.drawable.์„ ํ–ˆ์„ ๋•Œ ํ•ด๋‹น ํŒŒ์ผ์ด ๋ณด์ธ๋‹ค. ํŒŒ์ผ์„ bitmap ๋ฆฌ์†Œ์Šค๋กœ ๊ฐ€์ ธ์˜ค๋„๋ก ํ•œ ๊ฒƒ์ด๋‹ค. ๋˜ canvas.drawBitmap(bmp, x:0, y:0, paint:null)์„ ์ ์–ด์ค€๋‹ค.

public class sampleView extends View{
    private Paint paint = new Paint();
    private Bitmap bmp;

    public sampleView(Context context) {
        super(context);
        setBackgroundColor(Color.WHITE);

        Resources res = context.getResources();
        bmp = BitmapFactory.decodeResource(res, R.drawable.gom);
    }

    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        paint.setTextSize(50);
        canvas.drawText("Hello world!", 10, 100, paint);

        canvas.drawBitmap(bmp, 0, 0, null);
    }
}

์•„๋ž˜๋Š” Bitmap์œผ๋กœ ๊ทธ๋ฆฐ ์ด๋ฏธ์ง€๋‹ค.

samlpleView Bitmap์œผ๋กœ ๊ทธ๋ฆฐ ์ด๋ฏธ์ง€

xml์„ ์ด์šฉํ•ด์„œ๋„ ๊ฐ€๋Šฅํ•˜๋‹ค. xml์— ์ •์˜๋ฅผ ํ•ด์„œ ์ด๋ฏธ์ง€๋ฅผ ๋ถˆ๋Ÿฌ์˜ฌ ์ˆ˜ ์žˆ๋‹ค. layout - activity_main.xml ์— ๋“ค์–ด๊ฐ„๋‹ค. ์•„๋ž˜ ์ฝ”๋“œ์™€ ๊ฐ™์ด <ImageView>๋กœ ํŒŒ์ผ ๋ถˆ๋Ÿฌ์˜ค๋Š” ๊ฒƒ์ด๋‹ค. width์™€ height์„ match_parent๋กœ ํ•œ ๊ฒƒ์€ ์ „์ฒดํ™”๋ฉด์„ ๊ฝ‰ ์ฑ„์šฐ๋ผ๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค.

<ImageView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:src="@drawable/gom"/>

์•„๋ž˜๋Š” xml๋กœ ๊ทธ๋ฆฐ ์ด๋ฏธ์ง€๋‹ค.

xml ImageView๋กœ ๊ทธ๋ฆฐ ์ด๋ฏธ์ง€

MP3 ํ”Œ๋ ˆ์ด์–ด ๋งŒ๋“ค๊ธฐ

  • ์ค‘์š”ํ•œ ๊ฒƒ → manifests / MainActivity / layout
  • layout์€ ํ™”๋ฉด์ด ์–ด๋–ป๊ฒŒ ๊ตฌ์„ฑ๋˜๋Š”์ง€๋ฅผ ์˜๋ฏธํ•œ๋‹ค.
  • ๋งŒ์•ฝ layout์—์„œ ๋ฒ„ํŠผ์„ ๋งŒ๋“ ๋‹ค๋ฉด, ๊ทธ ๋ฒ„ํŠผ์ด ๋™์ž‘๋˜๋Š” ํ•จ์ˆ˜๋Š” MainActivity์—์„œ ๋งŒ๋“ ๋‹ค.

์•„๋ž˜ ์ฝ”๋“œ๋Š” xml์˜ ์ฝ”๋“œ์˜ ์ผ๋ถ€๋ถ„์ด๋‹ค. ์ด๋ ‡๊ฒŒ TextVeiw๋กœ ํ…์ŠคํŠธ๋ฅผ ๋งŒ๋“ค๊ณ , ํฌ๊ธฐ๋ฅผ ์ •ํ•˜๊ณ  ์ •๋ ฌํ•œ๋‹ค. ๋˜ํ•œ id์— hellobutton์ด๋ผ๋Š” id๋ฅผ ๋ถ€์—ฌํ–ˆ๋‹ค.

   <TextView
        android:id="@+id/hellobutton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Play"
        android:textSize="100dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

layout์˜ activity_main.xml์—์„œ ๋ฒ„ํŠผ์„ ๋งŒ๋“  ํ›„, MainActivity์—์„œ TextView tv๋ฅผ ๋งŒ๋“ ๋‹ค. ๊ฒ€์ƒ‰ํ•ด๋ณด๋‹ˆ findViewById()๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด xml์—์„œ ์ ์šฉ์‹œํ‚จ ๊ธ€์ž๋ฅผ ๋ณ€๊ฒฝํ•˜๊ฑฐ๋‚˜ ์ƒ‰์„ ๋ฐ”๊พธ๊ฑฐ๋‚˜, ํฌ๊ธฐ๋ฅผ ์ ์šฉ์‹œํ‚ค๋Š” ๋“ฑ์˜ ๋ฉ”์†Œ๋“œ๋ฅผ ์ง€์›๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค๊ณ  ํ•œ๋‹ค. ๋˜  tv.SetOnClickListener()๋Š” TextView๋ฅผ ํด๋ฆญํ–ˆ์„ ๋•Œ ()์•ˆ์— ์žˆ๋Š” ์ฒ˜๋ฆฌ๋ฅผ ํ•˜๊ฒ ๋‹ค๋Š” ์˜๋ฏธ๋กœ, ํ…์ŠคํŠธ๋ฅผ ํด๋ฆญํ•˜๋ฉด ํ…์ŠคํŠธ๊ฐ€ 'Stop'์œผ๋กœ ๋ฐ”๋€Œ๋ฉฐ ์Œ์•…์ด ๋‚˜์˜ค๊ณ , ๋‹ค์‹œ ํด๋ฆญํ•˜๋ฉด ํ…์ŠคํŠธ๊ฐ€ 'Start'๋กœ ๋ฐ”๋€Œ๋ฉฐ ์Œ์•…์ด ๋ฉˆ์ถ”๋Š” ๋ฉ”์†Œ๋“œ๋ฅผ ๊ตฌํ˜„ํ–ˆ๋‹ค.

package com.example.mp3player;

import androidx.appcompat.app.AppCompatActivity;

import android.media.MediaPlayer;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

    TextView tv;
    MediaPlayer mp;

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

        mp = MediaPlayer.create(this, R.raw.bomber);
        mp.setLooping(false);

        tv = (TextView) this.findViewById(R.id.hellobutton);
        tv.setOnClickListener(new Button.OnClickListener() {
            @Override
            public void onClick(View v) {
                if(!mp.isPlaying()){
                    mp.start();
                    tv.setText("Stop");
                } else{
                    mp.pause();
                    tv.setText("Start");
                }

            }
        });
    }
}

์Œ์•…์„ ๋ฉˆ์ท„์„ ๋•Œ
์Œ์•…์„ ์žฌ์ƒํ–ˆ์„ ๋•Œ

๐Ÿ“Œ ์ƒํ™œ์ฝ”๋”ฉ - DATABASE2 - MySQL

SQL์˜ INSERT ๊ตฌ๋ฌธ

๋ฐ์ดํ„ฐ ์ถ”๊ฐ€ํ•˜๊ธฐ & ์ถ”๊ฐ€ํ•œ ๋ฐ์ดํ„ฐ ๋ณด๊ธฐ

USE opentutorials๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์„ ํƒํ•˜๊ณ , SHOW TABLES๋ฅผ ์ด์šฉํ•˜์—ฌ ์ง€๋‚œ๋ฒˆ์— ๋งŒ๋“  'topic' ํ…Œ์ด๋ธ”์„ ํ™•์ธํ•œ๋‹ค. ๋˜ํ•œ DESC ํ‚ค์›Œ๋“œ๋ฅผ ์ด์šฉํ•˜์—ฌ topic ํ…Œ์ด๋ธ”์˜ ๊ตฌ์กฐ๋ฅผ ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

๋ณต์žกํ•ด๋ณด์ด์ง€๋งŒ ํ…Œ์ด๋ธ” ์•ˆ์— ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  ์ถ”๊ฐ€ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋Š” ๊ณผ์ •์ด๋‹ค. INSERT๋ฌธ์„ ์ด์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ , SELECT๋ฌธ์„ ์ด์šฉํ•˜์—ฌ ์ถ”๊ฐ€๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ์•„๋ž˜ ๊ฐ„๋‹จํ•œ INSERT๋ฌธ์„ ๋ณด๋ฉด topic ํ…Œ์ด๋ธ”์— ๋ฐ์ดํ„ฐ๋ฅผ INSERT ํ•˜๊ฒ ๋‹ค๋Š” ๋œป์ด๋ฉฐ, ์ฒซ๋ฒˆ ์งธ ๊ด„ํ˜ธ ์•ˆ์— ๋“ค์–ด์˜ค๋Š” column์˜ ์ด๋ฆ„์€ ๋‘๋ฒˆ์งธ ๊ด„ํ˜ธ ์•ˆ์— ๋“ค์–ด์˜ค๋Š” values๊ฐ€ ๋ฌด์—‡์ธ์ง€ ์•Œ๋ ค์ค€๋‹ค. ๋”ฐ๋ผ์„œ ๊ทธ ์ˆœ์„œ๊ฐ€ ์„œ๋กœ ๊ฐ™์•„์•ผํ•œ๋‹ค.  

INSERT INTO topic (title,description,created,author,profile) VALUES('MySQL','MySQL is...',
NOW(),'gom','developer');

์•„๋ž˜ SELECT๋ฌธ์€ topic ํ…Œ์ด๋ธ”์— ์ถ”๊ฐ€ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด์—ฌ์ค€๋‹ค. ๋‚ด๊ฐ€ ๊ฐ€์ ธ์˜ค๊ณ  ์‹ถ์€ ๋ฐ์ดํ„ฐ๋ฅผ topic ํ…Œ์ด๋ธ”๋กœ๋ถ€ํ„ฐ ์„ ํƒํ•˜์—ฌ ๊ฐ€์ ธ์˜ค๊ฒ ๋‹ค๋Š” ์˜๋ฏธ์ด๋‹ค.

SELECT * FROM topic;

 

'TIL' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[TIL] 220117  (0) 2022.01.17
[TIL] 220113  (0) 2022.01.13
[TIL] 220111  (0) 2022.01.11
[TIL] 220110  (0) 2022.01.10
[TIL] 220109  (0) 2022.01.09