2017-03-14 7 views
0

현재 한 곳에서 투명한 배경을 가진 활동을 열어서 그 아래의 활동을 볼 수있는 응용 프로그램에서 작업하고 있습니다. 이것은 충분히 간단했고 나는 그것을 빨리 풀었습니다. 그러나 이제는 어떤 종류의 흐림 필터를 추가하여 내 활동 아래의 활동이 흐려지는 것처럼 보입니다.투명한 배경 및 흐림 효과가 적용된 활동

나는 몇 가지 다른 해결책을 찾았지만 행운이 없었으므로 이것을 질문으로 추가하려고합니다. 누구든지 이것을 해결할 수있는 좋은 방법을 알고 있습니까?

감사합니다.

+0

안녕하세요 JesperQV. 내 대답이 유용하다면 투표하십시오. –

답변

0

많은 라이브러리가 있습니다. Here's 그들 중 하나의 목록. 개인적으로 나는 BlurView을 사용했습니다 (라이브러리 중 하나에 연결하는 것이 사이트 규칙에 위배되지 않기를 바랍니다). 그러나 라이브러리를 패치해야했습니다 (this issue 참조). pull 요청은 아직 없습니다. 또한 애니메이션의 성능 문제도있었습니다. 축소 크기 (예를 들어, 4 회 이하)로, 변환 행렬을 설정, 비트 맵에 대한 캔버스 만들기

  • 이 확장
  • 이 배경을 렌더링 적용 :

    는 기본적으로 모든 라이브러리가 같은 일을 윈도우의

  • 백으로 비트 맵을 그립니다 ScriptIntrinsicBlur
  • 사용하여 캔버스에
  • 블러 캔버스의 비트 맵 활동의 루트 뷰를 렌더링 캔버스 보기의 근거, 크기 조정 된 백업 4 번

스케일링이 필요한 이유는 무엇입니까? 성능상의 이유로. 4 배나 더 작은 것을 모두 그리는 것이 훨씬 빠르며, 확대 효과로 인해 흐림 효과가 "강해지 며"ScriptIntrinsicBlur가 한 패스로 얼마나 흐리게 처리 할 수 ​​있는지와 여러 패스가 다시 느려지는 한계가 있습니다.

0

API < 14의 경우 WindowManager.LayoutParams.FLAG_BLUR_BEHIND 플래그를 사용할 수 있습니다. 더 높은 APIS의 경우 더 이상 지원되지 않습니다.

그러나보기로이를 수행 할 수 있습니다.

활동의 전체 레이아웃에서 비트 맵을 만들고 원하는 방법으로 비트 맵을 흐리게 처리하십시오. 모든 것을 다루는 레이아웃에서 뷰를 추가 (또는 숨기기 해제)하면 문제가 해결됩니다.