2016-08-05 95 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的按钮。如果在这里仍然有问题评论,请删除 –