5.Android-Ui
Android- UI
1.button 만들기
<TextView
android:layout_width="match_parent"
android:layout_height="@dimen/button_height"
android:text="@string/upload_image"
android:textSize="@dimen/title_size"
android:gravity="center"
android:textColor="@color/white"
android:layout_margin="@dimen/content_padding"
android:background="@drawable/button_background"/>
2. 아래에서 위로 올라오는 다이얼로그 만들기
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
setupLisener()
}
private fun setupLisener(){
upload_image.setOnclickListener {
UploadChooser().show(supportFragmentManager,"")
}
}
}
3. interface 를 사용하여 내가 처리하고 싶은곳을 끌고 간다
class UploadChooser : BottomSheetDialogFragment() {
interface UploadChooserNotifierInterface {
fun cammeraOnClick() // 함수생성
fun galleryOnClick()
} //
// interface의 멤버변수 생성 - 카메라버튼클릭시 cammeraOnClicke 호출
var uploadChooserNotifierInterface : UploadChooserNotifierInterface? = null
// interface를 등록해줄수 있는 함수생성
fun addNotifier(listener : UploadChooserNotifierInterface){
uploadChooserNotifierInterface = listener
}
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
return inflater.inflate(R.layout.upload_chooser,container,false)
}
override fun onActivityCreated(savedInstanceState: Bundle?) {
super.onActivityCreated(savedInstanceState)
setupListener()
}
private fun setupListener() {
// interface가 있다면 카메라 호출
upload_camera.setOnClickListener{
uploadChooserNotifierInterface?.cammeraOnClick()
// 이자리에서 권한작업 진행가능 하지만 MainActivity에서 권한작업을 하기위해서 interface를 만듬
}
// interface가 있다면 갤러리 호출
upload_gallery.setOnClickListener {
uploadChooserNotifierInterface?.galleryOnClick()
}
}
}
———————
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
setupLisener()
}
private fun setupLisener(){
upload_image.setOnClickListener() {
// UploadChooser().show(supportFragmentManager,"") - 버튼을 화면에 보이는 기능
// UploadChooser 코틀린파일에 있는 함수를 사용한다
UploadChooser().apply {
// interface생성 함수 호출
addNotifier(object : UploadChooser.UploadChooserNotifierInterface {
override fun cammeraOnClick() {
}
override fun galleryOnClick() {
}
}) // 초기화 끝난상태 ( 버튼이 선택시 카메라,갤러리 호출)
}.show(supportFragmentManager,"") // - 버튼을 화면에 보이는 기능
}
}
}
4. 카메라권한, 라이브러리 권한
class PermissionUtile {
fun requestPermission(
// vararg 복수개 가변인수
activity: Activity , requestCode : Int , vararg permission :String
): Boolean {
var granted = true
val permissionNeeded = ArrayList<String>()
permission.forEach {
val permissionCheck = ContextCompat.checkSelfPermission(activity,it)
val hasPermission = permissionCheck == PackageManager.PERMISSION_GRANTED
granted = granted and hasPermission
if (!hasPermission) {
permissionNeeded.add(it)
}
}
if(granted){
return true
} else {
ActivityCompat.requestPermissions(
activity, permissionNeeded.toTypedArray(), requestCode
)
return false
}
}
}
Leave a comment