프리미어 프로 기본 자동자막 생성 불편하셨죠?
영상 편집 시간을 절반으로 줄여주는 컷백
가격도 절반으로 이용해보세요!
아래 링크를 통해 가입하시면 1개월 50% 할인 쿠폰을 드립니다.
★가입 링크: https://cutback.video/r?c=E4wh
해당 링크를 통해서 회원가입을 하셔야 합니다.
25.01.04 기준
19,900원/월 > 9,900원/월 (-50%)
프리미어 프로 기본 자동자막 생성 불편하셨죠?
영상 편집 시간을 절반으로 줄여주는 컷백
가격도 절반으로 이용해보세요!
아래 링크를 통해 가입하시면 1개월 50% 할인 쿠폰을 드립니다.
★가입 링크: https://cutback.video/r?c=E4wh
해당 링크를 통해서 회원가입을 하셔야 합니다.
25.01.04 기준
19,900원/월 > 9,900원/월 (-50%)
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 |
[Kotlin 코틀린] findViewById는 이제 끝! Kotlin Android Extension를 써보자 (0) | 2017.12.21 |
---|---|
[Kotlin 코틀린] Anko란?? (0) | 2017.12.21 |
기존에 findViewById는 너무 불편했다.
그래서 코틀린에서는 Kotlin Android Extension을 지원한다.
밑의 extension 부문만 추가해주면 된다.
아래는 자동으로 코드에 추가 된다.
이제 아래처럼 사용하면 된다.
[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")
로 간단하게 쓸 수 있다는거!!
훨씬 더 많은 기능이 있다는 데 아직 이것밖에 안써봤다....
[Kotlin 코틀린] 액션바에 버튼 추가하기 (0) | 2017.12.21 |
---|---|
[Kotlin 코틀린] findViewById는 이제 끝! Kotlin Android Extension를 써보자 (0) | 2017.12.21 |
타겟 SDK와 최소 SDK를 어떻게 잡아야 보편적인 사용자 기기들까지 적용할 수 있을까??
답은 점유율에 있다.
minAPI를 16까지 내리게 되면 왠만한 기기들은 다 적용한다고 보면 된다.
많이 내리게 되면 그만큼 API를 많이 못쓰게 되니 불편한건 사실이다.
외부 라이브러리(오픈소스)를 많이 쓰는 수 밖에 없는 것 같다.
그리고 targetAPI는 8.0 Oreo (26) 까지 잡는게 좋은 것 같다.
Oreo는 이미 테스트를 다 맞춘 안전한 API이므로 타겟으로 잡아도 무난한 것 같다.
[안드로이드] 확장성있게 개발하기 [해상도별, 언어별] (0) | 2017.12.20 |
---|
처음에 개발에 들어가면 아무 생각없이 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는 영어로 해주는 편이 일반적이다.)
[안드로이드] targetSdkVersion과 minSdkVersion 어떻게 잡을까?? (0) | 2017.12.21 |
---|
https://nuriwiki.net/wiki/index.php/%EC%98%A4%EC%9D%BC%EB%9F%AC_%ED%94%BC_%ED%95%A8%EC%88%98
[Algorithm] 중국인의 나머지 정리 Chinese remainder theorem (0) | 2017.08.31 |
---|---|
[Algorithm] 확장 유클리드 알고리즘 Extended Euclid Algorithm (0) | 2017.08.31 |
[Algorithm] Convex Hull Algorithm (0) | 2017.08.24 |
[Algorithm] CCW Algorithm [펌] (0) | 2017.08.24 |
중국인의 나머지 정리는, 어떤 수 x를 서로소인 m1, m2, m3, ..., mn으로 각각 나눴을 때 나머지가 a1, a2, a3, ..., an 이라고 할 때 x는 m1* m2 * m3 * ... * mn 의 modular 연산 안에서 해가 유일하다는 것을 말한다.
[Algorithm] 오일러 파이(피) 함수 Euler's phi function (0) | 2017.08.31 |
---|---|
[Algorithm] 확장 유클리드 알고리즘 Extended Euclid Algorithm (0) | 2017.08.31 |
[Algorithm] Convex Hull Algorithm (0) | 2017.08.24 |
[Algorithm] CCW Algorithm [펌] (0) | 2017.08.24 |
http://codepractice.tistory.com/79
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 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 | #include<iostream> #include<vector> #include<queue> #include<stack> #include<algorithm> using namespace std; int RecursiveEuclid(int a, int b) { if (a < b) swap(a, b); if (a%b == 0) return b; else return RecursiveEuclid(b, a%b); } template<typename T> T LoopEuclid(T a, T b) { if (a < b) swap(a, b); while (a%b != 0) { T tmp = a; a = b; b = tmp%b; } return b; } template<typename T> pair<T, T> ExtendedEuclid(T a, T b) { T q = (a / b); T r = a%b; T s1, s2, t1, t2; s1 = 0; t1 = 1; s2 = 1; t2 = 0; while (r!=0) { T temps = s2; s2 = s1; s1 = temps - s1*q; T tempt = t2; t2 = t1; t1 = tempt - t1*q; a = b; b = r; q = (a / b); r = a%b; } return pair<T, T>(s1, t1); } int main() { int a = 69; int b = 23; pair<int, int> sol = ExtendedEuclid(a,b); cout << sol.first << "*" << a << "+" << b << "*" << sol.second << "=" << LoopEuclid(a, b) << endl; a = 67; b = 23; sol = ExtendedEuclid(a, b); cout << sol.first << "*" << a << "+" << b << "*" << sol.second << "=" << LoopEuclid(a, b) << endl; } | cs |
[Algorithm] 오일러 파이(피) 함수 Euler's phi function (0) | 2017.08.31 |
---|---|
[Algorithm] 중국인의 나머지 정리 Chinese remainder theorem (0) | 2017.08.31 |
[Algorithm] Convex Hull Algorithm (0) | 2017.08.24 |
[Algorithm] CCW Algorithm [펌] (0) | 2017.08.24 |
https://en.wikipedia.org/wiki/Graham_scan
Convex Hull 알고리즘은 한국말로 볼록 껍질 알고리즘이라고도 하며
여러 점 가운데서 가장 큰 볼록 다각형을 찾는 알고리즘이다.
Graham scan(+CCW) method 를 쓴다.
https://www.acmicpc.net/problem/1708
위의 문제를 풀어보면 좋을 것 같다.
[Algorithm] 오일러 파이(피) 함수 Euler's phi function (0) | 2017.08.31 |
---|---|
[Algorithm] 중국인의 나머지 정리 Chinese remainder theorem (0) | 2017.08.31 |
[Algorithm] 확장 유클리드 알고리즘 Extended Euclid Algorithm (0) | 2017.08.31 |
[Algorithm] CCW Algorithm [펌] (0) | 2017.08.24 |