5.Android-Ui

1 minute read

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