1. 레이아웃 애니메이션 넣기

https://proandroiddev.com/enter-animation-using-recyclerview-and-layoutanimation-part-1-list-75a874a5d213


** <layoutAnimation> 요소에 duration 속성을 지정하지 않으면 애니메이션이 실행되지 않음.


2. 각 셀마다 애니메이션 나오게 하기

어댑터 안의 onBindHolder 내에 아래의 코드 삽입

(lastPosition은 어댑터 클래스의 전역 변수이며 초기값은 0 또는 -1)


if(position != lastPosition){

    Animation animation;

    if(position > lastPosition && position != 0) {

        animation = AnimationUtils.loadAnimation(holder.itemView.getContext(), R.anim.anim_slideup);    //아래로 스크롤 시 보여질 애니메이션

    }else{

        animation = AnimationUtils.loadAnimation(holder.itemView.getContext(), R.anim.anim_slidedown);    //위로 스크롤 시 보여질 애니메이션

    }

    holder.itemView.startAnimation(animation);

    lastPosition = position;

}


** 아이템을 추가 또는 삭제 할 때 lastPosition을 해당 아이템의 position으로 설정하면 추가/삭제 시 애니메이션 발생하지 않음.

ex )

private void add(int index, TextData data) {

    //데이터베이스에 데이터 넣기(단일)

    lastPosition = index;

    dataList.add(index, data);

    notifyItemInserted(index);

}


private void remove(TextData data) {

    //데이터베이스에서 데이터 지우기(단일)

    int removeIndex = dataList.indexOf(data);

    lastPosition = removeIndex;

    dataList.remove(removeIndex);

    notifyItemRemoved(removeIndex);

}


3. 기본 추가/삭제 애니메이션이 보여지길 원한다면.. 

notifyItemInserted, notifyItemRemoved를 적용(위의 코드의 파란색 형광펜 참조)

촬영&앨범에서 가져오기&CROP 까지 다 참고할 수 있는 링크를 발견하였다.


* 촬영 코드 참고

http://egloos.zum.com/mightyfine/v/315645


* 촬영, 앨범에서 가져오기, 자르기 모두 다 참고 가능

http://programmar.tistory.com/5


이전까지는 갤러리에 접근하여 이미지를 가져왔다면
이제부터는 문서제공자를 통하여 이미지를 가져오게 변경된 것 같다.
그리고 해당 파일의 Uri를 가져오기 위해서는 FileProvider를 사용..

* FileProvider 공식 설명 페이지
https://developer.android.com/reference/android/support/v4/content/FileProvider.html

* 저장소 액세스 프레임워크 설명 페이지
https://developer.android.com/guide/topics/providers/document-provider.html?hl=ko



아무런 낌새도 없이 어느 날 갑자기 안되서 사흘을 날려먹어버렸다 -_-;;

TargetSDKVersion이 22이므로 사용자에게 permission 요구하는 부분은 생략하였음.



File provider 사용 시 권한 관련 에러날 때

SDK 16 미만 - 권장하지 않음

List<ResolveInfo> resolvedIntentActivities = getContext().getPackageManager().queryIntentActivities(cameraInent, PackageManager.MATCH_DEFAULT_ONLY);

    for (ResolveInfo resolvedIntentInfo : resolvedIntentActivities) {

        String packageName = resolvedIntentInfo.activityInfo.packageName;

        getContext().grantUriPermission(packageName, photoURI, Intent.FLAG_GRANT_WRITE_URI_PERMISSION | Intent.FLAG_GRANT_READ_URI_PERMISSION);

    }

}


SDK 16~21

if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.LOLLIPOP) {

    takePictureIntent.setClipData(ClipData.newRawUri("", photoURI));

    takePictureIntent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION|Intent.FLAG_GRANT_READ_URI_PERMISSION);


참고 URL

http://egloos.zum.com/mightyfine/v/315645

https://github.com/ParkSangGwon/TedBottomPicker/issues/31

https://medium.com/@quiro91/sharing-files-through-intents-part-2-fixing-the-permissions-before-lollipop-ceb9bb0eec3a


 

INTENT_ACTION

DATATYPE 

카카오톡공유결과 

이미지 단일

SEND 

image/* 

공유 성공 

이미지 다수 

SEND_MULTIPLE 

image/* 

공유 성공 

PDF 단일 

SEND 

application/* 

공유 성공 

PDF 다수 

SEND_MULTIPLE 

*/* 

application/*

공유 실패

(다중전송은 이미지만 가능합니다) 

이미지+PDF 

SEND_MULTIPLE 

*/*

image/*|application/* 

공유 실패

(다중전송은 이미지만 가능합니다) 




1. 기본 intent 공유하기로 카카오톡으로 다수의 PDF파일을 공유할 수 없다.(이미지 파일은 가능했음)


2. 한 개만 보낼 때 

intent.setAction(Intent.ACTION_SEND);

//action이 Intent.ACTION_SEND 일 때 putExtra 안에 ArrayList 객체를 넣으니 문제 발생함. 무조건 하나만 보내야 함.

intent..putExtra(Intent.EXTRA_STREAM, Uri.fromFile(파일객체));

intent.setType(application/*);



+ Recent posts