목록개발자료 (56)
[위미르 개발팀] Android, iOS , Web 제작
체크박스 여러개를 사용할때 다음과같이 전체를 체크하는 체크박스가 있고, 이에 연동되는 다른 체크박스들이 있을때 전체를 누르면 나머지것들이 체크되고 전체를 제외하고 나머지중에 하나라도 체크해제하면 전체동의 부분만 체크해제 되어야 할때가 있습니다. 이를 전체동의를 누르면 모든 체크박스가 체크되고 나머지 3개가 모두 체크되면 전체동의 체크박스도 같이 체크되며전체 체크된상태에서 하나라도 체크해제한다면 전체동의 체크박스가 같이 체크해제되도록 한 소스코드입니다. @Override public void onCheckedChanged(CompoundButton compoundButton, boolean b) { switch (compoundButton.getId()){ case R.id.all_check: isall ..
Glide는 분명 이미지 로딩에 있어서 좋은 라이브러리는 맞지만 비트맵을 받아서 사용할경우가 있는데, 이때는 이미지를 로딩한 이미지뷰에서 비트맵을 가져오려고하면 일반적인 비트맵이 들어있지않아서 비트맵을 가져오는데 어려움이 있습니다. Glide 4.0버전부터 지원하는것이 있는데 이미지를 로딩할때 비트맵으로 가져와서 이를 이미지에 넣고 동시에 다른곳에 이용하는것입니다. 먼저 프로젝트의 gradle 파일에 다음을 추가해주세요. repositories { mavenCentral() google() } dependencies { implementation 'com.github.bumptech.glide:glide:4.4.0' annotationProcessor 'com.github.bumptech.glide:co..
사용자에게 알림창을 띄워서 확인을 받는 방법입니다. 이전에는 UIAlertView를 사용하였으나, iOS8 버전부터 이것이 deprecate 되었습니다. 여전히 사용은 가능하지만 그래도 애플이 권장하는 방식인 UIAlertController를 사용하는것이 좋을것같습니다. 여기에는 제목을 설정하고 , 메시지 그리고 확인버튼과 취소버튼을 만들어서 달아줄수 있습니다. let alert = UIAlertController(title: "제목", message: "확인 메시지", preferredStyle: .alert) let cancelAction = UIAlertAction(title: "취소", style: .cancel){ (action : UIAlertAction) -> Void in self.dism..
뷰에 이미지를 넣을때 권장사이즈보다 클경우 이미지가 찌그러져 보이는 경우와 크기를 줄여서 업로드 해야 하는 경우가 있습니다. 이럴때 원본사이즈를 줄여서 넣는것은 번거롭고 그게 불가능한 경우가 있으므로 UIImage 변수로 가지고 있다면 이를 스위프트 코드상에서 해결할수 있습니다. // 원본 이미지 org_image var new_image : UIImage! let size = CGSize(width: 리사이즈 넓이 , height: 리사이즈 높이 ) let rect = CGRect(x: 0, y: 0, width: size.width, height: size.height) UIGraphicsBeginImageContextWithOptions(size, false, 1.0) image.draw(in: r..
안드로이드에 GridView, RecyclerView가 있다면 iOS에는 UICollectionView가 있습니다. 이는 화면에 격자로 아이템을 배치하거나 할때 사용 합니다. 이를 구성하기 위해서는 셀 클래스와 UICollectionView의 셀 속성 그리고, 안드로이드의 아답터에 해당되는것들이 필요합니다. 먼저 UICollectionView의 셀 속성입니다. let layout : UICollectionViewFlowLayout = UICollectionViewFlowLayout() layout.itemSize = CGSize(width: self.view.frame.width , height: self.view.frame.height/3) layout.scrolldirection = .horizont..
Swfit3에서 뷰에 클릭 리스너를 설정할때는 버튼과 일반 뷰 두가지경우가 있고 설정 방법이 다릅니다. 먼저 버튼의 클릭 리스너 설정 방법입니다. let button : UIButton = UIButton(frame : CGRect(x: 0 , y: 0, width: 100, height: 30)) button.setTitle = ("버튼", for: UIControlState.nermal) button.addTarget(self, action: #selector( 리스너 함수 ), for: UIControl.touchUpinside) 저는 button 이라는 UIButton 객체를 임의로 생성하여 리스너를 설정하였습니다. 버튼은 바로 addTarget이라는 메서드를 사용하여 리스너를 설정할수 있고, f..
안드로이드에서 상황에 따라 뷰를 정의할때 어떠한 뷰는 보여야할때와 보이지 않아야할때가 있습니다. 이럴때 setVisibility에서 gone과 invisible을 사용하게 되는데, 이 둘을 사용을 하면서도 차이를 모르고 사용하는 분들이 많이 있습니다. 이 둘은 보이지 않는다는점은 같지만 차이는 뷰가 공간을 그대로 차지하고있느냐 완전히 없어지느냐 하는 것입니다. RelativeLayout에서 다른 뷰를 기준으로 위치를 잡았을때 기준으로 잡은 뷰가 invisible일 경우 해당뷰에서 아무런 영향이 없지만, gone일 경우 기준이 된 뷰가 사라졌으므로 해당뷰의 위치가 변경됩니다. 그리고 LinearLayout에서도 horizontal 일때와 vertical 일때 모두 중간의 뷰가 invisible이면 빈공간이..
요즘은 거의 대부분이 안드로이드 스튜디오로 넘어 갔지만, 기존에 사용하던툴의 익숙함과 기존에 존재하고 있던 프로젝트때문에 어쩔수없이 이클립스를 계속 사용하는 분들이 아직도 있습니다. 하지만, ADT는 구글에서 SDK버전을 업데이트를 공식적으로 중단 하여 개발에 불편한점이 몇몇 존재합니다. 일반 이클립스에서 플러그인 형식으로 ADT를 설치 했을 경우 디버깅모드로 연결해서 어플리케이션을 Run 할수는 있지만 로그캣을 읽을수 없는 현상이 있습니다. 이럴경우, 이클립스 인스톨러에서 Eclipse IDE for Android Developers 라고 되어있는것을 설치하시면 됩니다. 이클립스용 SDK만 설치되어 있다면 설치후 별다른 설정없이 바로 안드로이드 개발이 가능하고, 로그캣도 문제없이 출력됩니다. 우측상단에..
안드로이드에서 테두리를 설정하는 방법은 TextView나 Image뷰 등을 넓이나 높이를 맞추고 두께를 1dp로 설정하고 백그라운드값을 주는방법도 가능하지만, 효율도 좋지 않고 매번 그렇게 테두리마다 설정해주는것은 번거로울수 있습니다. 뷰를 이용한 테두리 대신 xml을 이용하여 배경과 테두리를 설정할수 있습니다. 하나의 xml파일을 만들어두면 여러가지 뷰에서 활용 할수 있다는 장점이 있습니다. 먼저 drawable 폴더에서 new > xml 을 통해 xml을 생성하고 파일명은 본인이 이후에 다시 사용할때 식별 가능한 이름을 지정해두시면 됩니다. 아래에만 테두리123456789101112131415161718 Colored by Color Scriptercs 아래위로 테두리123456789101112131..
권장되는 방법은 아니지만, 스크롤뷰 내에 리스트뷰를 사용해야만 하는 경우가 있습니다. 하지만 스크롤뷰에 리스트뷰를 넣게 된다면, 리스트뷰 자체의 스크롤과 스크롤뷰의 스크롤이 간섭이 생길수 있다는 점이 있고, 실제로 스크롤뷰에 리스트뷰를 넣는다면 리스트뷰의 높이를 match_parent로 설정해도 화면의 일부만 차지하는것을 확인 하실수 있습니다. 이럴때에는 리스트뷰의 아이템 개수만큼 높이를 설정 해주어서 리스트뷰 자체는 스크롤이 되지않고 스크롤뷰만 스크롤이 되도록 하면 됩니다. 123456789101112131415public void setListViewHeight(ArrayAdapter adpater, ListView listView) { int totalHeight = 0; int desiredWid..