요술고양이의 Digital Life



최근에 생일날 미니 빔을 선물 받았습니다.





근데 집에 스크린도 없고 벽지도 약간 색이 있거나 방향이 여의치 않아


마땅히 어디에 쓸데가 없어서 활용하기가 어려웠습니다.



그래서 어떻게 사용할까 고민하던 도중 우연히 아래 타블렛깍는노인님 블로그에서 알루미늄 경량 프로파일로 제작한 제작기를 보게됩니다.

http://blog.naver.com/PostView.nhn?blogId=bumhee34&logNo=220639179350


마친 예전부터 액자형으로 프로젝터 스크린을 만들어 보고 싶어서 칼스 원단을 아마존 장바구니에만 넣어놓고


만들게 되면 크기랑 부피 때문에 이사나 보관에 용이할 것 같지는 않아 실행까지는못하고 있었는데 블로그를 보고


프로파일은 일단 분해가 가능하니깐 이사나 보관에 용이하다고 판단 저도 비슷한 방법으로 도전을 하게 되었습니다.





일단 오랜기간 장바구니에 담겨있던 칼스 원단을 바로 구매했습니다.





원단은 유명한 Carl's Blackout Cloth 입니다. 저의 경우 16:9에 66 x 110인치 원단을 구매했습니다.






원단이 도착하고 혹시라도 홈페이지에 기재된 110 x 66 인치랑 사이즈가 다를지도 몰라서 사이즈를 재보려고 펼쳐봤습니다.


다행히도 사이즈는 110 x 66인치 (2794 x 1676mm)가 정확하게 맞았습니다.








다음에는 알루미늄 프로파일을 주문해야하는데 스크린 인치 수를 고민했습니다.


최대한 원단을 활용해서  적절한? 사이즈를 만들고 싶었습니다.


대신 프로파일 두께에 따라 스크린이 달라질 수 있어서 알루미늄 프로파일두께를 결정해야했고

저는 기왕이면 단단한 프로파일이 좋을 것 같아 4040 (40 x 40 mm) 두께의 프로파일로 선택하고, 120인치에 16:9 스크린을 만들기로 했습니다.


이 경우 계산을 해보니 가로 세로 2656 x 1494 mm 프로파일 크기가 필요했고

가로는 해당 사이즈로 세로는 가로바 사이에 위치할 것이라 상하 프로파일 두께 만큼 제외하고 제단을 의뢰 했습니다.


W: 2656mm x H: 1414mm (상하 40 x 2 제외)









저는 세로바를 양끝 외에 가운데 하나만 두면 조금 모자랄 것 같아


처음에 3개를 보강하려다가 그건 너무 많을 것 같아 2개를 보강하는 형태로 했습니다.


그리고 가운데에 2개의 바를 둔 것은 다른 의도도 있는데요 그건 아래에 나옵니다. :)










이제 원단을 입힐 차례입니다. 원단은 만져보면 한쪽은 거칠고 한쪽은 고무재질이 코팅되어 있다고 하는데 부드럽고 매끈한 부분입니다.


부드럽고 매끄러운 부분에 투사될 것이므로 방향을 고려하여 원단을 입힙니다.






처음에는 이렇게 세워서 하나씩 고정하려고 했습니다만...



네... 이 방법은 무리였습니다.



결국 바닥에 원단을 깔고 프레임을 얹은 상태에서 고정을 시작했습니다.


(혹시라도 때가 탈까봐 담요 등을 깔았습니다.)



참고한 블로그에서는 홈커버(쫄대)는 포기하시고, 튜브관을 이용해서 고정을 했는데 저의 경우엔 그냥 쫄대로 했습니다.


대략 50 ~ 70 mm 정도로 잘라서 썼습니다.






돌아가면서 원단을 댕겨서 홈커버를 끼우고 고무망치로 때려서 고정을 했습니다.


홈커버가 안들어가면 어떠나 싶은데 다행히 잘 들어가더군요 대신 힘이 많이 들어가는 부분은 쉽게 빠질 수도 있어서


가급적 촘촘하게 여러군데 박았습니다.








이렇게 만들고 나면 이제 벽에 고정을 해야하는데 처음에는 천장에 와이어를 달아서 고정하려고 생각을 했었습니다.


그런데 천장에 구멍뚫고 고정하고 해야할 일련의 작업들이 괜시리 귀찮게 느껴지고 무엇보다 천장에 구멍을 뚫어도 되려나


무게는 지지할 수 있으려나하는 걱정도 되고 행거에 걸면 어떨까? 라는 생각을 했는데 역시나 많은 분들이 사용하는 방법인 것 같더라구요


그래서 행거에 걸기로 하고 걸쇠를 만듭니다.








평스틸로 프로파일 고정을 하고 행거에서 밀려 빠지지 않도록 150mm 짜리 짧은 프로파일로 위와 같이 고정했습니다.


원래는 프로파일마다 평스틸을 양옆으로 2개씩 쓰고 싶었는데 평스틸이 생각보다 두껍고 무거워서 튼튼했으므로 그냥 하나만 썼습니다.






가운데 프로파일 양쪽에 이렇게 고정을 해두고 





행거에 요로코롬 걸었습니다.




다행히 스크린는 약 15kg 무게로 심하게 무거운건 아니라서 행거에 거는게 크게 힘들지 않았습니다.


세로바가 2개라서 각각 한손으로 잡으면 되니 드는데 크게 어렵지도 않구요.


참고로 행거는 보통 보장하는 무게가 50 ~ 80kg (봉 두께에 따라) 정도로 표시하고 있어서  15kg의 스크린 무게는 크게 문제되진 않을 것 같습니다.




다만 이 녀석을 혼자서 걸려고 하면 스크린을 잡을 곳이 스크린 뒷 면밖에 없어서 행거에 걸때 벽과 행거를 등진채로 걸어야 하는대요


행거와 벽 사이가 가까울 경우 스크린과 행거(벽) 사이에 사람이 갇히는 형태가 됩니다.



하지만 행거 상단에만 걸 것이므로 스크린을 하단을 앞으로 내밀고 상단을 뒤로 기울여 걸고 스크린 아래로 빠져나오면 됩니다.


거꾸로 스크린을 내릴 때는 반대로 하면 되구요.







다 만들고 미니 빔으로 한번 쏴보았습니다. 사진상으로는 표현이 다 안되겠지만 애매한 벽지나 천장에 쏠 때보다는 훨씬 선명하고 좋았습니다.


사진상 화면이 살짝 삐딱한건 비스듬하게 찍어서 그런 겁니다. :)







이렇게 제작기를 마칩니다.


스크린 만들기 생각보다 참 쉽죠? 응?



스크린 원단 고정할 때만 조금 힘들었고 (손가락이 좀 아팠고 욕나올 정도는 아니었습니다.)


나머지는 크게 어렵지 않게 작업한 것 같습니다.



비용은 스크린 원단이 해외 배송비용 포함 5~6만, 프로파일+ 부속 16만 정도로 (화물이 착불로 1.4만이 추가로 나와서.. ㅠ 배송비 포함입니다)


전체 비용은 21 ~ 22정도 쓴 것 같습니다. (여기에 행거를 추가하신다면 2만원 정도 더 들거 같네요)



저는 프로파일을 경량보다 조금 더 무거운 일반 4040으로 맞춘데다가 부속을 여유있게 산다고 초과 지출한 경향이 있어 (쓸데없이 부속이 많이 남았습니다.)


조금 더 가벼운 경량이나 3030같은 모델로 결정하고, 불필요한 부속을 줄이면 적어도 4 ~ 5만원은 추가 절약할 수 있을 것 같습니다.




어쨌든 주말의 오후를 충분히(?) 즐겼습니다.



다만 빔이 미니빔이라 사거리가 안나와 화면을 꽉 못채우는게 아쉽네요 밝기도 그렇고..


이젠 스크린이 생겼으니 새 빔 프로젝터를 알아봐야하나 싶습니다 하하~


(아마존에 오래전부터 보아온 녀석이 있습니다. 흠흠)



그럼 :)



저작자 표시 비영리 변경 금지
신고

'일상다반사' 카테고리의 다른 글

120인치 프로젝터 스크린 제작기  (1) 2016.10.10

1

Anko는 JetBrain에서 만든 라이브러리로서, 안드로이드 레이아웃을 XML을 통하지 않고 쉽게 만들 수 있게 도와주는 DSL(Domain-Specific Language) 입니다.

간단한 코드 만으로 xml을 대신하여 레이아웃을 구성할 수 있게 도움을 줍니다.


일단 라이브러리 관련 사이트는 아래와 같습니다.

https://github.com/Kotlin/anko


안드로이드 스튜디오에서 적용은 아래와 같이 bilud.gradle에 추가해주면 됩니다.


dependencies {
    compile 'org.jetbrains.anko:anko-sdk15:0.9' // sdk19, sdk21, sdk23 are also available
    compile 'org.jetbrains.anko:anko-support-v4:0.9' // In case you need support-v4 bindings
    compile 'org.jetbrains.anko:anko-appcompat-v7:0.9' // For appcompat-v7 bindings
}


기본적인 사용 방법은 해당 사이트를 참고하면 아래와 같습니다.


class MyActivity : AppCompatActivity() {


override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)


verticalLayout {

padding = dip(30)

 editText {

 hint = "Name"

 textSize = 24f

 }


 editText {

 hint = "Password"

 textSize = 24f

 }


 button("Login") {

 textSize = 26f

 }

}

}


액티비티를 실앵해보면 아래와 같이 바로 모양이 뜹니다.



근데 문제는 동적으로 가변적인 수의 컴포넌트를 배치하고자 할 때 였습니다.


다수의 동일한 스타일의 컴포넌트들을 일괄적으로 배치하거나 특정한 상황이나 결과에 따라 동적으로 컴포넌트를 배치하고 싶은데

기본 페이지에서는 원하는 방법을 찾지 못했습니다.


그런데 해답은 생각보다 가까운데 있었습니다.


verticalLayout 중간에 components 관련 구문뿐만 아니라 일반 구문을 사용해도 에러나 문제가 없고

loop문 중간에 선언하는 것 만으로 배치가 가능했습니다.


그래서 아래와 같이 for나 forEach 등으로 원하는 수 만큼 동적으로 컴포넌트들을 배치할 수 있습니다.


class MyActivity: AppCompatActivity() {

val examples = arrayListOf("Example 1", "Example 2", "Example 3")

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)

verticalLayout {
padding = dip(30)

editText {
hint = "Name"
textSize = 24f
}

editText {
hint = "Password"
textSize = 24f
}

button("Login") {
textSize = 26f
}

examples.forEach { example ->
textView {
text = example
textSize = 26f
}
}

}
}

}






저작자 표시 비영리 변경 금지
신고

Comment +0

안드로이드에서는 UI 작업 시간이 너무 많이 걸립니다.

XML로 레이아웃 구성하는 데 시간도 많이 걸리지만 해당 위젯을 사용하려면 findViewById로 지정해서 사용해야 합니다.


하지만 Kotlin Extension은 레이아웃 XML에서 사용한 이름 그대로 액티비티 내에서 사용할 수 있습니다.

우선 아래 그림과 같이 액티비티의 레이아웃에서 Hello World를 출력하고 있는 TextView의 id를 ui_text_hello 라고 정하겠습니다.




만약 Hello World 대신 "Kotlin Example" 을 출력하려면 기존 방법으로는 아래와 같이 해야합니다.


class MainActivity : AppCompatActivity() {

lateinit var mTextHello: TextView

public override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)

mTextHello = findViewById(R.id.ui_text_hello) as TextView
mTextHello.text = "Kotlin Example"

}
}



하지만 지난 포스트에서 Kotlin Extension을 설치하셨다면 별도로 findViewById 없이 XML에서 선언한 이름 그대로 바로 접근할 수 있습니다.


class MainActivity : AppCompatActivity() {

public override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)

ui_text_hello.text = "Kotlin Example"

}
}


대신 아래와 같이 layout 이름의 형태로 import가 됩니다.


import kotlinx.android.synthetic.main.activity_main.*


import에서 한줄이 추가되긴 했지만 TextView에 새로운 문자열 출력을 위한 세 줄짜리 코드가 한 줄로 줄어들었습니다.


그리고 실제로 개발 시에는 xml 레이아웃에 포함된 위젯은 한두개가 아니므로 전체적으로 코드를 줄이는데 큰 도움을 줍니다.

그리고 XML에서 지정한 이름을 그대로 사용하기 때문에 UI 레이아웃과 멤버 변수로 지정한 이름이 달라 헷갈리는 부분을 줄일 수가 있습니다.

저작자 표시 비영리 변경 금지
신고

Comment +0

티스토리 툴바