반응형

ImageView나 Drawable setColorFilter 함수를 사용하여 이미지에 색상을 입힐 수 있다.

setColorFilter(Color.RED) - 이미지에 투명을 제외한 부분에 색상을 입힌다. 

두번째 인자로 Mode를 받는데 이 모드에 따라서 색상이 어떻게 입혀지는지 결정 된다.

한번씩 사용해서 어떻게 적용되는지 확인해보면 좋다. 

public enum Mode {
    CLEAR       (0),
    SRC         (1),
    DST         (2),
    SRC_OVER    (3),
    DST_OVER    (4),
    SRC_IN      (5),
    DST_IN      (6),
    SRC_OUT     (7),
    DST_OUT     (8),
    SRC_ATOP    (9),
    DST_ATOP    (10),
    XOR         (11),
    DARKEN      (16),
    LIGHTEN     (17),
    MULTIPLY    (13),
    SCREEN      (14),
    ADD         (12),
    OVERLAY     (15);
}

참고로 이미지부의 setColorFilter를 사용하면 백그라운드에는 적용 되지 않는다.

백그라운드에도 적용 시키려면 별도로 background drawable에 colorFilter를 적용 하면 된다.

val backgroundDrawable = binding.btnFlash.background
backgroundDrawable.colorFilter = PorterDuffColorFilter(Color.YELLOW, PorterDuff.Mode.SRC_IN)
binding.btnFlash.background = backgroundDrawable

 

반응형

'개발정보' 카테고리의 다른 글

Android Handler와 View.post() 차이점  (0) 2019.12.16
[Android] adb로 apk추출하기  (0) 2016.02.29
java application 실행 방법 및 export 방법  (0) 2016.01.08
Transition Animation  (1) 2015.12.28
Posted by 곡물스토리
,
반응형

안드로이드에 쓰레드간 통신으로 Handler를 사용한다
특히 별도의 쓰레드에서 작업을 하다가 UI쓰레드에서의 작업이 필요 할 때 사용한다.

Handler를 직접 생성 하여 사용 하는 방법과 View에 있는 post함수를 사용하는 방법이 있는데 겉보기에는 둘의 차이가 거의 없다 그냥 뷰 안에 핸들러를 들고 있믄 것으로 보인다
그럼 무슨 차이가 있을까?

바로 뷰의 어태치 상태를 확인 하여 어태치 되지 않았을 때는 핸들러가 동작하지 않도록 되어 있다
뷰를 생성한 후에 무언가를 동작할 때 타이밍 이슈가 발생하는데 이럴때 이를 잘 이용하면 좀더 쉽게 해결할 수 있다

반응형

'개발정보' 카테고리의 다른 글

Android 이미지에 컬러 적용 ColorFilter  (0) 2021.12.04
[Android] adb로 apk추출하기  (0) 2016.02.29
java application 실행 방법 및 export 방법  (0) 2016.01.08
Transition Animation  (1) 2015.12.28
Posted by 곡물스토리
,
반응형

apk를 추출하는 방법

기본적인 adb셋팅이 다 되있다는 가정하에 진행

터미널에서
//adb 기기 접속
$ adb shell
//연결된 기기에 설치된 package 보기
$ pm list packages -f
//원하는 package 내용 복사
/data/app/com.example.test-1.apk=com.example.test
위 내용중 
/data/app/com.example.test-1.apk 만 복사

//shell 빠져 나돈다
$ exit
//pull로 추출

$ adb pull /data/app/com.example.test-1.apk
1339 KB/s (21955 bytes in 0.016s)


pull로 해당 경로 apk를 추출한다.
apk파일은 사용한 위치에 저장된다. 
 

반응형
Posted by 곡물스토리
,
반응형

java로 application을 제작하면 문제가 되는 것이 실행방법이다.

윈도우 프로그램과 달리 exe파일이 없어 바로 실행 할 수 없어 실행하려는 PC에는 java가 꼭 필요 하다. 또한 배포 할 때도 그냥 일단 jar파일이 아니고 실행 가능한 jar파일로 배포 해야지 바로 실행이 가능하다. 


실행 가능한 Jar 파일 Export방법은 아래와 같다.

이클립스에서 프로젝트 우클릭 -> export -> java의 Runnable JAR file을 선택하여 NEXT -> Export 될 위치를 지정하고 이름을 정해 준후 Finish



export를 선택하고 아래와 같이 창이 나오면 Runnable JAR file을 선택



jar파일 만들 경로를 설정하고 완료하면 실행가능한 jar 파일이 생성된다.






반응형

'개발정보' 카테고리의 다른 글

Android 이미지에 컬러 적용 ColorFilter  (0) 2021.12.04
Android Handler와 View.post() 차이점  (0) 2019.12.16
[Android] adb로 apk추출하기  (0) 2016.02.29
Transition Animation  (1) 2015.12.28
Posted by 곡물스토리
,

Transition Animation

개발정보 2015. 12. 28. 17:33
반응형

Transition Animation


안드로이드가 롤리팝으로 OS 업데이트 되면서 머테리얼 디자인이 적용 되었는데 이를 위해 화면 전환을 사용자가 인식 할수 없도록 시각적 연속성을 부여할 수 있는 애니메이션 기능이 추가 되었다.

위의 그림과 같이 activity1 에서 activity2로 넘어 갈때 화면이 끊기지 않고 자연스럽게 넘어 갈수 있도록 activity1의 선택된 그림이 activity2의 그림으로 커지는 애니메이션이 적용되면서 화면이 이동하게 된다.

이를 바로 Transition Animation 이라고 한다.

이를 적용하기 위해선

1. 머테리얼 테마와 함께 아래와 같은 특정 속성을 적용해야 한다.

<style name="BaseAppTheme" parent="Theme.AppCompat.Light.NoActionBar">

<item name="android:windowContentTransitions">true</item>

<item name="android:windowAllowEnterTransitionOverlap">true</item>

<item name="android:windowSharedElementEnterTransition">@android:transition/move</item>

<item name="android:windowSharedElementExitTransition">@android:transition/move</item>

</style>

물론 코드 상에서도 적용이 가능하다.

// inside your activity (if you did not enable transitions in your theme)
getWindow
().requestFeature(Window.FEATURE_CONTENT_TRANSITIONS);

// set an exit transition
getWindow
().setExitTransition(new Explode());

Window.setAllowEnterTransitionOverlap() 메서드를 적용 하면 좀더 빠른 Animation효과를 볼수 있다.

2. activity1과 activity2를 연결해줄 뷰의 이름을 공유한다.

3. ActivityOptions.makeSceneTransitionAnimation()을 사용하여 startActivity를 한다.

Intent intent = new Intent(this, Activity2.class);
       
// create the transition animation - the images in the layouts
       
// of both activities are defined with android:transitionName="robot"
       
ActivityOptions options = ActivityOptions
           
.makeSceneTransitionAnimation(this, androidRobotView, "robot");
       
// start the new activity
        startActivity
(intent, options.toBundle());

4. 뷰를 공유하여 이를 애니메이션에 사용한다면 하나뿐 아니라 여러개의 뷰를 공유하여 더욱 다채로운 애니메이션을 만들수 있다. 아래와 같이 Pair객체를 생성하여 ActivityOptions에 추가 하면 여러개의 애니메이션 화면 전환시에 동작한다.

ActivityOptions options = ActivityOptions.makeSceneTransitionAnimation(this,
       
Pair.create(view1, "agreedName1"),
       
Pair.create(view2, "agreedName2"));

5. 위에까지는 activity1에서 수행되어야 하는 코드들이고 activity2에서는 activity1에서 시작하여 activity2의 특정뷰로 도착하는 뷰를 공유하여야 한다.

View.setTransitionName() 메서드로 위에서 적용한 "robot"을 똑같이 적용한다.

위의 순서대로 간단하게 화면 전환 애니메이션을 적용할 수 있다.


샘플 코드 : https://github.com/jhson5183/TransitionAnimation.git


반응형
Posted by 곡물스토리
,