2016-08-05 9 views
0

私の画像ボタンにSmallBang というこのクールなアニメーションを使用しようとしています。ここで私のコードはどのように見えるのですか:ボタンクリックでアニメーションを使用しますか?

import xyz.hanks.library.SmallBang; 

public class MainActivity extends AppCompatActivity { 

private SmallBang smallBang; 
private ImageButton imageButton; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    smallBang = SmallBang.attach2Window(this); 
    smallBang.bang((ImageButton) findViewById(R.id.imageButton)); 
} 

public void onSettingsButtonClick(View view) { 
    Intent intent = new Intent(getApplicationContext(), SettingsActivity.class); 
    startActivity(intent); 
    finish(); 

} 
} 

私はそのアニメーションを使い、別のアクティビティに変更したいと思います。私はこのコードを実行すると、私はこのエラーを取得:

java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setTypeface(android.graphics.Typeface)' on a null object reference 

私はsmallbangアニメーションを削除する場合は、ボタンや活動の変化だけで正常に動作します。アニメーションを動かすために私は何ができますか?ライブラリをGradleファイルに追加しました。

+1

ショー 'SettingsActivity'コード –

+0

@SohailZahid私はそれを開いて、私はそこに小さなミスを犯した実現。修正するとエラーなしでビューを変更できるようになりましたが、ボタンのアニメーションは機能しません。私はLogicのソリューション(下記)を試したが、それでもまだ動かなかった。 –

+0

Jrは3分のテストを行います。 –

答えて

1

ワーキングコード

public class MainActivity extends Activity { 

    private SmallBang mSmallBang; 
    private ImageView ImageButton; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     mSmallBang = SmallBang.attach2Window(this); 

     ImageButton = (ImageView) findViewById(R.id.imageButton); 
     ImageButton.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 

       mSmallBang.bang(v); 
       mSmallBang.setmListener(new SmallBangListener() { 
        @Override 
        public void onAnimationStart() { 
        } 

        @Override 
        public void onAnimationEnd() { 

        } 
       }); 
      } 
     }); 
    } 
} 

activity_main:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:background="@drawable/image_1"> 


    <ImageButton 
     android:id="@+id/imageButton" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_centerHorizontal="true" 
     android:layout_centerVertical="true" 
     android:src="@mipmap/ic_launcher" /> 
</RelativeLayout> 

はあなたのコードの変更を更新します。

public class MainActivity extends Activity { 

    private SmallBang mSmallBang; 
    private ImageView ImageButton; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     mSmallBang = SmallBang.attach2Window(this); 
     ImageButton = (ImageView) findViewById(R.id.imageButton); 
    } 

    public void onSettingsButtonClick(View view) { 
     mSmallBang.bang(view); 
     mSmallBang.setmListener(new SmallBangListener() { 
      @Override 
      public void onAnimationStart() { 
      } 

      @Override 
      public void onAnimationEnd() { 
       Intent intent = new Intent(getApplicationContext(), SettingsActivity.class); 
       startActivity(intent); 
       finish(); 
      } 
     }); 
    } 
} 
+0

を削除してください。 –

+0

これは動作しますが、 "onCreate"ではなく "onSettingsButtonClick"メソッド内のコードに可能な場合は不思議です。 –

+0

@CarltonJr。それがうまくいくならば投票し、目盛りをつけてください。 –

0

このようにしてみ

import xyz.hanks.library.SmallBang; 

public class MainActivity extends AppCompatActivity { 

private SmallBang smallBang; 
private ImageButton imageButton; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    smallBang = SmallBang.attach2Window(this); 
    imageButton = (ImageButton) findViewById(R.id.imageButton); 
    smallBang.bang(view,new SmallBangListener() { 
    @Override 
    public void onAnimationStart() { 
    } 

    @Override 
    public void onAnimationEnd() { 
     onSettingsButtonClick(imageButton); 
    } 
    }); 
} 

public void onSettingsButtonClick(View view) { 
    Intent intent = new Intent(getApplicationContext(), SettingsActivity.class); 
    startActivity(intent); 
    finish(); 

} 
} 
+0

私はそれを試しましたが、アニメーションを表示しませんし、また、私は、アプリケーションを開くとすぐにボタンをクリックし、ビューを即座に変更します。助言がありますか? –

+0

私はXMLでボタンのonclickを書いたかもしれないと思います。ここに問題点がある場合は、 –

関連する問題