2016-08-05 107 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(); 

} 
} 

我想使用該動畫,然後切換到另一個活動。如果我刪除smallbang動畫,按鈕和活動的變化只是正常

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

:當我運行這段代碼我得到這個錯誤。我能做些什麼來獲得動畫效果?我已經將庫添加到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

它現在有效,但我想知道,如果有可能,但我的「onSettingsButtonClick」方法而不是「onCreate」中的代碼? –

+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的按鈕。如果在這裏仍然有問題評論,請刪除 –