sitemap.xml







menu.xml은 다음과 같다(자바로 할때랑 마찬가지)



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?xml version="1.0" encoding="utf-8"?>
<menu
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto" >
 
    <!-- 액션 버튼으로써 나타나는 "검색" 아이템  -->
    <item
        android:id="@+id/action_search"
        android:title="@string/action_favorite"
        android:icon="@android:drawable/ic_menu_search"
        app:showAsAction="ifRoom" />
 
    <!-- 액션 버튼으로써 나타나는 "공유" 액션 아이템 -->
    <item
        android:id="@+id/action_share"
        android:title="@string/action_cart"
        android:icon="@android:drawable/ic_menu_share"
        app:showAsAction="ifRoom" />
 
</menu>
menu.xml
cs




코틀린으로 구현할 때는 방식이 좀 다르다.


아래와 같이 하면 간단하게 구현한다.


구글링하면 다른 방법으로 한 것들도 많이 발견된다. 뭐가 베스트인지는 모르겠다




1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
class MainActivity : AppCompatActivity() {
 
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
    }
 
    //액션버튼 메뉴 액션바에 집어 넣기
    override fun onCreateOptionsMenu(menu: Menu?): Boolean {
        menuInflater.inflate(R.menu.menu, menu)
        return true
    }
 
    //액션버튼 클릭 했을 때
    override fun onOptionsItemSelected(item: MenuItem?): Boolean {
        when(item?.itemId){
            R.id.action_search -> {
                //검색 버튼 눌렀을 때
                return super.onOptionsItemSelected(item)
            }
            R.id.action_share -> {
                //공유 버튼 눌렀을 때
                return super.onOptionsItemSelected(item)
            }
            else -> return super.onOptionsItemSelected(item)
        }
    }
}
MainActivity.kt
cs




참고) 혹시 커스텀 툴바(custom toolbar)를 만들었는데 메뉴 아이템이 안들어간다면


actionbar를 설정을 안했을수도 있다. 그러면, MainActivity.kt에 다음과 같이 코드를 짜주면 된다.


액션바 코드는 타이틀을 없애주는 코드다.



 

1
2
3
4
5
//참고: 커스텀 툴바 적용하기
val toolBar = find<toolbar>(R.id.toolbar)
setSupportActionBar(toolBar)

//참고: 타이틀 없애기
val actionBar = supportActionBar
if(actionBar != null) actionBar.setDisplayShowTitleEnabled(false)
cs


기존에 findViewById는 너무 불편했다.


그래서 코틀린에서는 Kotlin Android Extension을 지원한다.


밑의 extension 부문만 추가해주면 된다.






아래는 자동으로 코드에 추가 된다.







이제 아래처럼 사용하면 된다.






'Study > Kotlin' 카테고리의 다른 글

[Kotlin 코틀린] 액션바에 버튼 추가하기  (0) 2017.12.21
[Kotlin 코틀린] Anko란??  (0) 2017.12.21

https://github.com/Kotlin/anko





Anko is a Kotlin library which makes Android application development faster and easier. It makes your code clean and easy to read, and lets you forget about rough edges of the Android SDK for Java.


라고 한다.


신기했던 거는 

toast("Hi there")

longToast("Hi there")

로 간단하게 쓸 수 있다는거!!


훨씬 더 많은 기능이 있다는 데 아직 이것밖에 안써봤다....

타겟 SDK와 최소 SDK를 어떻게 잡아야 보편적인 사용자 기기들까지 적용할 수 있을까??


답은 점유율에 있다.





minAPI를 16까지 내리게 되면 왠만한 기기들은 다 적용한다고 보면 된다.


많이 내리게 되면 그만큼 API를 많이 못쓰게 되니 불편한건 사실이다.


외부 라이브러리(오픈소스)를 많이 쓰는 수 밖에 없는 것 같다.


그리고 targetAPI는 8.0 Oreo (26) 까지 잡는게 좋은 것 같다.


Oreo는 이미 테스트를 다 맞춘 안전한 API이므로 타겟으로 잡아도 무난한 것 같다.





'6699card' is 50 cards for a smooth conversation.


'6699' means double quotes("").


It was made in Adobe After Effect at Dec, 2017.


and, It was made for SET, Inc..


https://youtu.be/4PiffYVq4Qc


https://www.facebook.com/6699card/videos/1554627461282790/





처음에 개발에 들어가면 아무 생각없이 layout이나 drawable, dimens, strings을 만들기 마련이다. (나만 그런가....)


그래서 이번에는 앱 스토어에 올릴려면 필수적인 확장성에 대해서 공부해볼려고 한다. (오픈소스를 많이 뒤지다 보면 많이 나오기는 한다. 하지만 정리!)




[1-1] 해상도별(drawable)





일단 https://developer.android.com/guide/practices/screens_support.html?hl=ko 을 참고하면 Android 구성 한정자는 다음과 같다.









총 주로 쓰는 건 mdpi ~ xxhdpi를 쓴다. 자세히는 잘 모르겠다.




쓰는 방법은 


(1)  adobe illustrator 에서 mdpi로 작업한 다음(http://www.kmshack.kr/2013/03/%EC%95%88%EB%93%9C%EB%A1%9C%EC%9D%B4%EB%93%9C-%EC%95%B1-%EA%B0%9C%EB%B0%9C%EC%9E%90%EA%B0%80-%EC%A0%9C%EC%95%88%ED%95%98%EB%8A%94-%EB%94%94%EC%9E%90%EC%9D%B8-%EB%B0%A9%EB%B2%95%EB%A1%A0-3-dpi-dipdp/ 참고)에 Asset Export를 하여 dpi별로 이미지를 가져온다.


(2) 4개를 나눠진 파일을 위 2번째 사진처럼 4개의 'drawable-XXX dpi' 에 각자 저장한다.


(3) 쓰는 방법은 4개로 나뉘어도 이름은 graphic.png로 같다. 그러므로 '@drawable/graphic' 으로 쓰면 된다.


자세한 건  https://developer.android.com/guide/practices/screens_support.html?hl=ko 를 참고하면 됩니다.









[1-2] 해상도별(layout, dimens)





Android에서 지원하는 화면 구성 한정자는 다음과 같다.


https://developer.android.com/guide/practices/screens_support.html?hl=ko (참고)




위와 같은 경우를 쓰는 경우는 테블릿을 대상으로 할때는 쓰지만 모바일만 지원하는 경우는 이렇게 잘 안쓴다고 한다. 풍문


그래서 dimens을 관리한다고 한다. 잘 모르겠다.


그냥 dp를 믿고 쓴다는 거 같다.








[2] 언어별(strings)






https://developer.android.com/training/basics/supporting-devices/languages.html?hl=ko



위 링크를 확인하면 자세히 나온다.




위와 같이 나뉘어서 저장하면



위와 같이 자동으로 분류해주고 국기까지 그려준다ㅎㅎ



이렇게 하면 사용자가 기기에서 언어설정을 어떻게 해주었냐에 따라 언어가 결정된다.


values는 디폴트로 적용된다.


(예를 들면, 사용자가 기기를 스페인어로 설정해놨는데 이 앱에서는 스페인어를 지원하지 않으므로 values에 있는 언어를 가져온다. 그러므로, values는 영어로 해주는 편이 일반적이다.)









Google Firebase Realtime Database

To fix bug :


Fixed bug :


Actual Result :



Expected Result :


'Open Source > Chromium' 카테고리의 다른 글

Errors  (0) 2017.02.11
Sites related to Chromium  (0) 2016.12.16
The Chromium Projects - Get the Code[start Chromium] & Error  (0) 2016.12.16

어려운 문제는 아니지만


auto 를 처음 써봤다. 신기하군


C++ 11 버전부터 사용 가능한 기능이라네요.


나머지 코드는 그렇게 어렵지 않습니다.


vector와 sort()




1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <cstdio>
#include <algorithm>
#include <vector>
 
using namespace std;
 
int main(){
    int n, x, y;
    vector<pair<intint>> v;
    
    scanf("%d"&n);
    while(n--){
        scanf("%d %d"&x, &y);
        v.push_back(make_pair(x, y));
    }
    sort(v.begin(), v.end());
    
    for(auto lt : v){
        printf("%d %d\n", lt.first, lt.second);
    }
    
    return 0;
}
 
cs


+ Recent posts