묻고 답해요
129만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨[라이브 멘토링] 유니티 뱀파이어 서바이벌 장르 모작
해당 강좌 내용을 PC게임 제작에 접목해도 괜찮을까요?
강의 내용이 모바일 플랫폼을 기준으로 하고 있는데 이 내용을 pc게임에 적용해도 괜찮을지 궁금합니다
-
미해결
피그마 강의는 왜 모바일 디자인 밖에 없을까요?
피그마 관련 강의들을 싹 다 들어보려고 합니다. XD를 하다가 퍼블리셔나 개발자들이 피그마를 더 선호한다는 얘기를 듣고 피그마 공부를 시작해보려고 하는데요. 모바일 환경 만큼이나 웹 환경도 매우 중요한데.. 왜 강의들은 전부 모바일 디자인 쪽으로만 형성되어있는지 궁금하내요. 모바일 디자인을 알면 웹 디자인도 저절로 할 수 있어서 그런건지..
-
미해결Vue.js 시작하기 - Age of Vue.js
반응형 웹앱을 제작하고 있는데
작업을 하다보니까 css 미디어 쿼리를 쓸 때도 있고 vuex 에서 window width를 저장해놓고 사이즈가 감지되면 v-if-else로 필요한 컴포넌트를 불러오는 방식을 동시에 쓰고 있습니다. 레이아웃이 크게 변하지 않는 부분은 미디어 쿼리로 해결하고너무 크게 변하는 부분은 v-if-else로 렌더링하고 있는데요 서서히 프로젝트가 커짐에 따라서 이게 나중에 유지보수가 가능할지 두렵네요 처음부터 PC/Mobile를 나눠서 따로 만들었어야 했나 싶다가도막상 또 그렇게 나누자니 레이아웃이 크게 안 바뀌는 부분도 제법 많아서 혼란에 빠졌습니다. 이와 관련해서 조언을 얻을 수 있을지 궁금합니다.
-
미해결프리다(Frida)를 이용한 안드로이드 앱 모의해킹
안티 디버깅 관련 강의도 듣고 싶습니다
안녕하세요 요즘 안티디버깅 적용된 앱들이 많이 있어서 안티디버깅 기법과 우회 방법론 등 정보를 알고 싶습니다.
-
미해결
findViewById 함수 호출 시 null값 반환
안녕하세요. CustomAdapter 강의 수강중에 다음과 같은 에러가 발생해서 문의드립니다. 그대로 따라하면서 진행하였는데 이상하다 싶어서 에러 메시지를 확인해보니, 아래 코드에서 rowtextview1 변수에 null이 반환되고 있음을 확인하였습니다. val rowtextview1 = findViewById<TextView>(R.id.rowtextView1) 전체 코드는 아래와 같습니다. 어떻게하면 View의 id값을 정상적으로 가져올 수 있을까요?? * MainActivity.kt * package com.example.customadapterimport androidx.appcompat.app.AppCompatActivityimport android.os.Bundleimport android.util.Logimport android.view.Viewimport android.view.ViewGroupimport android.widget.BaseAdapterimport android.widget.Buttonimport android.widget.ListViewimport android.widget.TextViewclass MainActivity : AppCompatActivity() { val data1 = arrayOf("데이터1","데이터2","데이터3","데이터4","데이터5") override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) val textveiw1 = findViewById<TextView>(R.id.textView1) val listveiw1 = findViewById<ListView>(R.id.list1) listveiw1.adapter = adapter1 } //getCount의 리턴 값 만큼 getView가 호출되어 R.layout.row의 View 객체를 붙여준다. val adapter1 = object : BaseAdapter(){ // 항목의 개수를 반환 override fun getCount(): Int { return data1.size } // 항목의 인덱스 번호를 전달했을 때, 객체를 넘기는 기능 override fun getItem(position: Int): Any? { return null } // 임의로 정해진 아이디 값을 넘겨주는 기능 override fun getItemId(position: Int): Long { return 0 } // 현재 화면에 표시되는 항목만큼 호출됨 // position : 몇 번째 항목을 구성할 것인가, convertView : 화면에서 없어진 뷰를 저장 override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View { // 재사용 가능한 View를 변수에 담는다. var rowView = convertView if(rowView == null) { // inflate는 XML을 참고하여 View 객체를 생성 및 반환하는 함수 // 1번째 인자는 View 객체를 만들 때 참고하는 XML, 2번째 인자는 해당 View 객체의 상위 객체(레이아웃)\ rowView = layoutInflater.inflate(R.layout.row, null) } // 항목 뷰 내부에 배치되어 있는 뷰들의 주소 값을 가져온다. val rowtextview1 = findViewById<TextView>(R.id.rowtextView1) rowtextview1.text = data1[position] return rowView!! } }} * activity_main.xml * <?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context=".MainActivity" > <TextView android:id="@+id/textView1" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="TextView" android:textAppearance="@style/TextAppearance.AppCompat.Large" /> <ListView android:id="@+id/list1" android:layout_width="match_parent" android:layout_height="match_parent" /></LinearLayout> * row.xml * <?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal"> <TextView android:id="@+id/rowtextView1" android:layout_width="wrap_content" android:layout_height="40dp" android:layout_weight="1" android:text="TextView" android:textAppearance="@style/TextAppearance.AppCompat.Large" /> <Button android:id="@+id/rowbutton1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="버튼1" /> <Button android:id="@+id/rowbutton2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="버튼2" /></LinearLayout>