안드로이드 초강력 입자 애니메이션 라이브러리, 유성우, 폭발, 화면 가득 꽃 날리기 등 입자 특수효과 신속 실현

회사 프로젝트 때문에 입자 애니메이션의 특수효과를 만들어야 하기 때문에 많은 자료를 찾았는데 우연히 github에서 비교적 강한 입자 특수효과 애니메이션 leonids를 발견하여 여러분께 공유했습니다.
Leonids는 표준 안드로이드 UI와 함께 사용되는 입자 시스템 라이브러리입니다.이 라이브러리는 매우 가볍다.LeonidsLib.jar는 81Kb밖에 없어요.
유성우 효과
폭발 효과
파문 효과
플라워 효과
우선 우리는 창고를 끌어들였는데, 방식은 매우 간단하다. 현재 최신 버전은 1.3.2이다
 compile 'com.plattysoft.leonids:LeonidsLib:1.3.2'
allprojects {
    repositories {
        jcenter()
    }
}

상기 부분을 다 하고 나면 이 강력한 입자 애니메이션 라이브러리는 우리가 이미 도입했다
1:폭발 효과
일단 저희가 테스트를 해볼게요.
    new ParticleSystem(mActivity, 1000, R.mipmap.flower0, 3000)
                        .setSpeedModuleAndAngleRange(0.05f, 0.2f, 0, 360)
                        .setRotationSpeed(30)
                        .setAcceleration(0, 90)
                        .oneShot(mButton1, 200);

Activity 비onCreate에서 상기 코드를 호출하면 우리는 멋진 폭발 효과를 볼 수 있다
그리고 매개 변수의 의미를 설명해 드릴게요.
 new ParticleSystem(mActivity, 1000, R.mipmap.flower0, 3000)

첫 번째 파라미터는 상하문 대상(context), 두 번째 파라미터(최대 입자 수), 세 번째 파라미터(입자 자원), 네 번째 파라미터(입자 보존 시간)
두 번째 파라미터의 의미는 동시에 존재하는 최대 입자 수를 가리키고 네 번째 파라미터는 각 입자의 가장 긴 저장 시간을 가리킨다.
   .setSpeedModuleAndAngleRange(0.05f, 0.2f, 0, 360)

첫 번째, 두 번째 매개 변수는 속도 구간이다. 이 속도는 입자의 발사 속도(중력을 설정하지 않으면 입자의 속도는 고정적이다. 중력을 설정하면 입자의 속도는 중력 방향에 따라 바뀐다)이다. 입자는 이 속도 구간에서 무작위로 입자마다 독립된다.
세 번째, 네 번째 파라미터는 입자를 발사하는 각도, 0-360의 임의의 구간을 가리키는데 이 파라미터의 작용은 다음과 같다.우리는 입자를 발사하는 방향을 조종하는데, 마찬가지로 이 범위 내에서 무작위로
  .setRotationSpeed(30)

이 매개 변수 의 의미 는 그림 원소 의 자전, 입자 원소 자체 의 회전 속도 를 가리킨다
.setAcceleration(0, 90)

이 매개 변수의 의미는 중력 가속도, 첫 번째는 중력 가속도의 값, 두 번째는 중력 가속도의 방향을 가리킨다. 이론적으로 말하자면 우리가 설정한 임의의 방향은 중력 방향이다.
 .oneShot(mButton1, 200);

알면서도 원샷은 한 번 발사한다. 첫 번째 파라미터는 발사 위치이고, 두 번째 파라미터는 발사 입자 수량이다.
비화 효과
 new ParticleSystem(mActivity, 1000, R.mipmap.flower0, 10000)
                        .setSpeedModuleAndAngleRange(0.05f, 0.2f, 0, 90)
                        .setRotationSpeed(60)
                        .setAcceleration(0.00005f, 90)
                        .emit(0, -100, 30, 10000);

다른 방법과 마찬가지로 유일한 차이는
.emit(0, -100, 30, 10000);

첫 번째 파라미터와 두 번째 파라미터는 화면의 픽셀 좌표, 입자 애니메이션의 발사점,
세 번째 파라미터는 초당 몇 개의 입자를 발사하는가이다
네 번째 파라미터는 몇 초 동안 계속 발사하는가
시간이 되면 입자는 자동으로 발사를 멈춘다
셋째, 구조 함수와 몇 가지 방법
입자 시스템은 일반적으로 게임에 사용되는데 용도가 광범위하다. 폭발, 화재, 스모그 등이다.이러한 효과는 일반 응용 프로그램에서도 사용할 수 있으며, '다즙' 이나 '익살스러운 디자인' 요소를 추가할 수 있다.게임의 주요 용도가 게임이기 때문에 모든 엔진이 입자 시스템을 지원하지만 표준 안드로이드 사용자 인터페이스에는 이런 것이 없다.이것은 안드로이드 프로그램을 구축하고 입자 시스템을 원한다면 그래픽 엔진을 포함하고 OpenGL을 사용해야 한다는 것을 의미한다. 이것은 너무 과장된 것이다. 또는 스스로 그것을 실현해야 한다.레오니즈는 이 공백을 메우고 표준 안드로이드 UI를 사용하는 개발자에게 입자 시스템을 가져다준다.
모든 구조 함수는 활동, 입자의 최대 수량과 생존 시간을 사용한다.입자의 이미지를 지정하는 방법에 따라 다릅니다.
지원되는 드로잉은 BitmapDrawable 및 AnimationDrawable입니다.
ParticleSystem(Activity a,int maxParticles,int drawableRedId,long timeToLive)
ParticleSystem(Activity a,int maxParticles,Drawable drawable,long timeToLive)
ParticleSystem(Activity a,int maxParticles,    ,long timeToLive)
ParticleSystem(Activity a,int maxParticles,AnimationDrawable  ,long timeToLive)

또한 일부 구조 함수는 보기 ID를 부모 보기로 받아들일 수 있기 때문에 입자 시스템을 배경에 놓을 수 있습니다. (또는 두 보기 사이)
ParticleSystem(Activity a,int maxParticles,int drawableRedId,long timeToLive,int parentViewId)
ParticleSystem(Activity a,int maxParticles,Drawable drawable,long timeToLive,int parentViewId)
ParticleSystem(Activity a,int maxParticles,    ,long timeToLive,int parentViewId)
ParticleSystem(Activity a,int maxParticles,AnimationDrawable  ,long timeToLive,int parentViewId)

또 다른 구조 함수는 부모 보기 그룹과drawable를 수신하여 참고를Activity에 전달하기에 적합하지 않은 곳에 사용합니다
ParticleSystem(ViewGroup parentView,int maxParticles,Drawable drawable,long timeToLive)

입자 시스템에서 구성할 수 있는 방법은 다음과 같습니다.
setSpeedRange(float speedMin,float speedMax):  0-360      
setSpeedModuleAndAngleRange(float speedMin,float speedMax,int minAngle,int maxAngle)
setSpeedByComponentsRange(float speedMinX,float speedMaxX,float speedMinY,float speedMaxY)
setInitialRotationRange(int minAngle,int maxAngle)
setScaleRange(float minScale,float maxScale)
setRotationSpeed(float rotationSpeed)
setRotationSpeedRange(float minRotationSpeed,float maxRotationSpeed)
setAcceleration(     ,    )
setFadeOut(long milisecondsBeforeEnd,Interpolator interpolator):                  
setFadeOut(      ):         

생성되고 이동된 입자를 사용하려면, 이 방법은 생성된 입자 그룹을 사용합니다
setStartTime(int time)
송신기
발사기에서 초당 입자 수를 발사하다.발사 시간을 설정하면 발사기는 이 시간 이후에 멈추고, 그렇지 않으면 연속된다.
기본 송신기
  • 송신(View 송신기, int particlesPerSecond)
  • 발사(View 송신기, int particlesPerSecond, int 송신 시간)
  • (x, y) 좌표 기반 발사
  • 송신 (int emitterX, int emitterY, int particlesPerSecond)
  • emit(int emitterX,int emitterY,int particlesPerSecond,int emitingTime)

  • 중력으로 발사하다
  • emitWithGravity(발사기 보기, int 인력, int particlesPerSecond)
  • emitWithGravity(발사기 보기, int 인력, int particlesPerSecond, int 발사 시간)
  • 업데이트, 중지 및 취소
  • 업데이트 emitPoint(int emitterX, int emitterY) 동적 업데이트 발사 지점.
  • 업데이트 emitPoint(View emiter, int gravity)는 중력을 사용하여 발사 지점을 동적으로 업데이트합니다.
  • stopEmitting()은 새 입자 발사를 중단했지만, 활동하는 입자는 업데이트됐다.
  • 새 입자의 발사를 취소()하고 활성 입자를 배출한다.

  • 입자 시스템마다 입자에 대한 그림만 사용합니다.만약 당신이 다른 입자를 발사하고 싶다면, 그것들 중 하나하나를 위해 입자 시스템을 만들어야 한다.
    각 입자 발사 예는 한 입자만 발사할 수 있으며, 만약 우리가 여러 종류의 다른 입자를 발사하려면 더 많은 발사 예시를 만들어야 한다
        
    소감
    수준이 제한되어 있기 때문에 이 프레임워크의 더 높은 사용을 개발하지 못했지만 문서를 보면 기능은 내가 묘사한 것만은 아니다.
    이론적으로 말하자면 이 틀은 유사한 성궤 등 더욱 복잡한 보기를 개발하고 벽돌을 던져 옥을 끌어올릴 수 있다. 만약에 글에 잘못된 부분이 있으면 저에게 제때에 연락하여 다른 사람을 오도하지 않도록 하세요.글 끝에 제가 위의 4가지 효과의 원본을 동봉하여 여러분들이 참고하도록 하겠습니다
    github 주소 전송문
    블로그 맨 위에 있는 네 가지 효과의 원본
    https://download.csdn.net/download/mymolit/10290777

    좋은 웹페이지 즐겨찾기