転送:https://www.jianshu.com/p/420629118c10
Githubの例:https://github.com/REBOOTERS/AndroidAnimationExercise
爆発の影響:https://github.com/tyrantgit/ExplosionField
- //爆発エリア
- プライベート ExplosionFieldmExplosionField;
- @オーバーライド
- protected void onCreate(Bundle savedInstanceState){
- super .onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- mExplosionField = ExplosionField.attach2Window(this );
- addListener(findViewById(R.id.root));
- }
- //展開する必要のあるビューを展開された領域に追加します
- private void addListener(View root){
- //ビューグループタイプの場合は、そのサブビューを領域に追加します
- if ( ViewGroupのルート インスタンス){
- ViewGroup親=(ViewGroup)ルート;
- for (int i = 0 ; i <parent.getChildCount(); i ++){
- addListener(parent.getChildAt(i));
- }
- }
- //これがView型のビューです
- else {
- //クリック可能に設定
- root.setClickable(true );
- //リスナーを追加します
- root.setOnClickListener(new View.OnClickListener(){
- @オーバーライド
- public void onClick(View v){
- //ビューを分解します
- mExplosionField.explode(v);
- //クリックイベントの登録を解除します
- v.setOnClickListener(null );
- }
- });
- }
- }