Note that there are some explanatory texts on larger screens.

plurals
  1. PO“Unfortunately your app has stopped” error in emulator at start of an animation
    primarykey
    data
    text
    <p>I'm new to android programming. Here I have a footer with a back, quickmenu and ok button. By pressing the menu button I want another linearlayout to slide up. And when it is pressed again it will slide down.</p> <p>BaseActivity:</p> <pre><code>package com.app.getconnected.activities; import com.app.getconnected.R; import com.app.getconnected.animations.CollapseAnimation; import com.app.getconnected.animations.ExpandAnimation; import android.os.Bundle; import android.app.Activity; import android.content.Intent; import android.util.DisplayMetrics; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.LinearLayout; import android.widget.TextView; abstract class BaseActivity extends Activity { protected TextView txtHeading; protected Button buttonBack; private Button buttonMenu; protected Button buttonOk; protected Button buttonHome; private LinearLayout MenuList; private int screenHeight; private boolean isExpanded; protected static final String activityPackage = "com.app.getconnected.activities"; protected static Boolean loggedIn=false; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.footer); } protected void initLayout(int resId, boolean homeButton, boolean backButton, boolean menuButton, boolean okButton) { if (txtHeading == null) txtHeading = (TextView) findViewById(R.id.header_text); if (txtHeading != null) txtHeading.setText(resId); buttonHome = (Button) findViewById(R.id.header_button_home); buttonBack = (Button) findViewById(R.id.footer_button_back); buttonMenu = (Button) findViewById(R.id.footer_button_menu); buttonOk = (Button) findViewById(R.id.footer_button_ok); buttonBack.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { goBack(); } }); buttonMenu.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { handleMenu(); } }); buttonHome.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(BaseActivity.this, MainActivity.class); startActivityForResult(intent, 1); finish(); } }); this.buttonHome.setVisibility(homeButton ? View.VISIBLE : View.INVISIBLE); this.buttonBack.setVisibility(backButton ? View.VISIBLE : View.INVISIBLE); this.buttonMenu.setVisibility(menuButton ? View.VISIBLE : View.INVISIBLE); this.buttonOk.setVisibility(okButton ? View.VISIBLE : View.INVISIBLE); } protected void goBack() { super.onBackPressed(); } private void handleMenu() { DisplayMetrics metrics = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(metrics); screenHeight = metrics.heightPixels; buttonMenu.setOnClickListener(new OnClickListener() { public void onClick(View v) { System.out.println("Quick Menu clicked"); if (isExpanded) { isExpanded = false; MenuList.startAnimation(new CollapseAnimation(MenuList, 0, (int)(screenHeight*0.7), 20)); }else { isExpanded = true; MenuList.startAnimation(new ExpandAnimation(MenuList, 0,(int)(screenHeight*0.7), 20)); } } }); } protected void disableBackButton() { } /** * * @param view */ public void startIntentByButton(View view) { Button button = (Button) view; if(!button.getTag().equals("")) { try { Intent intent = new Intent(getApplicationContext(), Class.forName(BaseActivity.activityPackage + "." + button.getTag().toString())); startActivityForResult(intent, 1); } catch (ClassNotFoundException e) { e.printStackTrace(); } } } } </code></pre> <p>Here are the two animation classes.</p> <p>Collapse:</p> <pre><code>package com.app.getconnected.animations; import android.view.View; import android.view.ViewGroup.LayoutParams; import android.view.animation.AccelerateInterpolator; import android.view.animation.Animation; public class CollapseAnimation extends Animation implements Animation.AnimationListener { private View view; private static int ANIMATION_DURATION; private int LastWidth; private int FromWidth; private int ToWidth; private static int STEP_SIZE=30; public CollapseAnimation(View v, int FromWidth, int ToWidth, int Duration) { this.view = v; LayoutParams lyp = view.getLayoutParams(); ANIMATION_DURATION = 1; this.FromWidth = lyp.height; this.ToWidth = lyp.height; setDuration(ANIMATION_DURATION); setRepeatCount(20); setFillAfter(false); setInterpolator(new AccelerateInterpolator()); setAnimationListener(this); } @Override public void onAnimationEnd(Animation animation) { // TODO Auto-generated method stub } @Override public void onAnimationRepeat(Animation animation) { // TODO Auto-generated method stub LayoutParams lyp = view.getLayoutParams(); lyp.height = lyp.height - ToWidth/20; view.setLayoutParams(lyp); } @Override public void onAnimationStart(Animation animation) { // TODO Auto-generated method stub LayoutParams lyp = view.getLayoutParams(); LastWidth = lyp.height; } } </code></pre> <p>Extend:</p> <pre><code>package com.app.getconnected.animations; import android.view.View; import android.view.ViewGroup.LayoutParams; import android.view.animation.AccelerateInterpolator; import android.view.animation.Animation; import android.widget.Toast; public class ExpandAnimation extends Animation implements Animation.AnimationListener { private View view; private static int ANIMATION_DURATION; private int LastWidth; private int FromWidth; private int ToWidth; private static int STEP_SIZE=30; public ExpandAnimation(View v, int FromWidth, int ToWidth, int Duration) { this.view = v; ANIMATION_DURATION = 1; this.FromWidth = FromWidth; this.ToWidth = ToWidth; setDuration(ANIMATION_DURATION); setRepeatCount(20); setFillAfter(false); setInterpolator(new AccelerateInterpolator()); setAnimationListener(this); } @Override public void onAnimationEnd(Animation animation) { // TODO Auto-generated method stub } @Override public void onAnimationRepeat(Animation animation) { // TODO Auto-generated method stub LayoutParams lyp = view.getLayoutParams(); lyp.height = LastWidth += ToWidth/20; view.setLayoutParams(lyp); } @Override public void onAnimationStart(Animation animation) { // TODO Auto-generated method stub LayoutParams lyp = view.getLayoutParams(); lyp.height = 0; view.setLayoutParams(lyp); LastWidth = 0; } } </code></pre> <p>Logcat:</p> <pre><code>10-24 09:08:52.210: D/dalvikvm(1095): GC_FOR_ALLOC freed 159K, 9% free 2860K/3120K, paused 41ms, total 59ms 10-24 09:08:52.350: D/gralloc_goldfish(1095): Emulator without GPU emulation detected. 10-24 09:08:56.489: D/dalvikvm(1095): GC_FOR_ALLOC freed 50K, 5% free 3321K/3472K, paused 51ms, total 68ms 10-24 09:09:14.550: I/System.out(1095): Quick Menu clicked 10-24 09:09:14.580: D/AndroidRuntime(1095): Shutting down VM 10-24 09:09:14.580: W/dalvikvm(1095): threadid=1: thread exiting with uncaught exception (group=0x414c4700) 10-24 09:09:14.680: E/AndroidRuntime(1095): FATAL EXCEPTION: main 10-24 09:09:14.680: E/AndroidRuntime(1095): java.lang.NullPointerException 10-24 09:09:14.680: E/AndroidRuntime(1095): at com.app.getconnected.activities.BaseActivity$4.onClick(BaseActivity.java:109) 10-24 09:09:14.680: E/AndroidRuntime(1095): at android.view.View.performClick(View.java:4240) 10-24 09:09:14.680: E/AndroidRuntime(1095): at android.view.View$PerformClick.run(View.java:17721) 10-24 09:09:14.680: E/AndroidRuntime(1095): at android.os.Handler.handleCallback(Handler.java:730) 10-24 09:09:14.680: E/AndroidRuntime(1095): at android.os.Handler.dispatchMessage(Handler.java:92) 10-24 09:09:14.680: E/AndroidRuntime(1095): at android.os.Looper.loop(Looper.java:137) 10-24 09:09:14.680: E/AndroidRuntime(1095): at android.app.ActivityThread.main(ActivityThread.java:5103) 10-24 09:09:14.680: E/AndroidRuntime(1095): at java.lang.reflect.Method.invokeNative(Native Method) 10-24 09:09:14.680: E/AndroidRuntime(1095): at java.lang.reflect.Method.invoke(Method.java:525) 10-24 09:09:14.680: E/AndroidRuntime(1095): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737) 10-24 09:09:14.680: E/AndroidRuntime(1095): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 10-24 09:09:14.680: E/AndroidRuntime(1095): at dalvik.system.NativeStart.main(Native Method) 10-24 09:11:49.983: I/Process(1095): Sending signal. PID: 1095 SIG: 9 10-24 09:11:52.441: D/gralloc_goldfish(1125): Emulator without GPU emulation detected. </code></pre> <p>Any help or advice is very welcome,</p> <p>Daniël</p>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload