2.Android-basic
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,카메라,외부기기 등)을. 호출
-
- Application Context : 앱전체에 context가 나오는것
-
- 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