2.Android-basic

2 minute read

1. Intent : 화면을 전환하는 경우 사용


2. Intent 종류


  • 명시적 intent : 작업을 수행하길 원하는 컴포넌트를 정확히 지목( 화면을 전환하는 경우 사용)

      ``` java
      1번 main
      Intent intent = new Intent(this, SecondActivity.class);
      startActivity(intent);
    
      2번 target
      Intent intent = getIntent();
    
      int data = intent.getIntExtra("INTENT_Key",0); // int
      String stringData = intent.getStringExtra("INTENT_Key_String"); //string
    
      Log.d("intent_key",""+data); // “”+ 다른타입 => 자동으로 auto casting 된다 ( 자동형변환)
      Log.d("INTENT_Key_String",stringData);
      ```
    



  • 암시적 intent : 해당 작업을 할 수 있는 컴포넌트 전부에게 전달 (Web브라우저 요청url, 카메라,전화)

      ```java
      1번 main
      Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("https:google.com"));
      startActivity(intent);
    
      ```
    



3. Thread


  • main thread 에서만 intent 화면전환과 같은 ui 작업이 가능하다


```java
    // 객체를 만들고 변수를 담아아둬서 사용
            Runnable runnable = new Runnable() {
                @Override
                public void run() {

                }
            };
            Thread thread = new Thread(runnable);
            thread.start();

    // Thread 객체를 바로 사용
            new Thread(new Runnable() {
                @Override
                public void run() {
                    Log.d("runable", "1");
                }
            }).start();


    // UI thread 만드는 방법
            runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    Toast.makeText(MainActivity.this,"토스트",Toast.LENGTH_LONG).show();
                }
            });



```



4.Context


  • ID역할, 안드로이드 시스템에서 제공하는 기능(Toast,카메라,외부기기 등)을. 호출


    1. Application Context : 앱전체에 context가 나오는것


    1. Activity Context : 추가하는 activity에 context가 나오는것




        Context context = this; // Activity의 context
        Context context2 = MainActivity.this; // Activity의 context

        Context applicationContext = getApplicationContext(); // application 의 context





image

  • src=“@drawable/경로”
  • scaletype : 여백조정 ( ex- fitxy, centercrop)

minmap

  • color, string은 res->color,string에 입력후 @로 경로를 사용하여 가져올수 있다

5. ViewComponent


  • 동적으로 뷰를 변경 : 내가 원하는 시점에 text같은 작업을 변경




public class MainActivity extends AppCompatActivity {



    ImageView imageView;
    TextView textView;


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

        // 이미지 뷰 id로 변경 - xml 의 뷰 컴포넌트를 동적으로 변경
        imageView = findViewById(R.id.imageV);
        imageView.setImageResource(R.drawable.ic_launcher_background);

        // 텍스트 뷰 id로 변경 - xml 의 뷰 컴포넌트를 동적으로 변경
        textView = findViewById(R.id.textV);
        textView.setText("hiii!");

        // Resource (res>string.xml) 에 저장된 변경된 텍스트로 빨간색 텍스트를 변경
        String content = getApplicationContext().getResources().getString(R.string.CONTENT);
        textView.setText(content);

        //Resource에 저장된 "string-array" 가져오기
        getApplicationContext().getResources().getStringArray(R.array.string_array);
        Log.d("string_array",
                getApplicationContext().getResources().getStringArray(R.array.string_array)[1]);


    }
}




6.Lisnter


  • 사용자의 input이 들어오면 알려줌




public class MainActivity extends AppCompatActivity {

    TextView textView;
    EditText editText;


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


        // textView에 onClickListener 달기
        textView = findViewById(R.id.textView);
        textView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(MainActivity.this, SecondActivity.class);
                startActivity(intent);


            }
        });

//        // textView에 onClickListener 다는방법2
//        View.OnClickListener listener = new View.OnClickListener() {
//            @Override
//            public void onClick(View v) {
//                Intent intent = new Intent(MainActivity.this, SecondActivity.class);
//                startActivity(intent);
//
//            }
//        };
//        textView.setOnClickListener(listener);
//

        // edit뷰에 입력시 로그확인
        editText = findViewById(R.id.editText);
        editText.addTextChangedListener(new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {
                Log.d("beforeTextChanged", "s:"+s);
                Log.d("beforeTextChanged", "start:"+start);
                Log.d("beforeTextChanged", "count:"+count);
                Log.d("beforeTextChanged", "after:"+after);
            }

            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {
                Log.d("onTextChanged", "s:"+s);
                Log.d("onTextChanged", "start:"+start);
                Log.d("onTextChanged", "count:"+count);
                Log.d("onTextChanged", "before:"+before);
            }

            @Override
            public void afterTextChanged(Editable s) {
                Log.d("afterTextChanged", "s:"+s);

            }
        });


    }
}





7. 계산기



        equal.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (first != null){
                    second = Integer.parseInt(temp); // 문자를 숫자로 바꾸는 함수
                }else{
                    first = Integer.parseInt(temp);
                }

                result.setText(String.valueOf(calculate())); // int를 string으로 바꾸는 함수

            }
        });


Leave a comment