Back to project page android_module_slide.
The source code is released under:
Apache License
If you think the Android project android_module_slide listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.
/* * #%L/*from w w w . j a va2 s . c om*/ * SlidingMenuDemo * $Id:$ * $HeadURL:$ * %% * Copyright (C) 2012 Paul Grime * %% * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * #L% */ package com.mi.core.slidingmenu; import com.mi.core.slidingmenu.R; import java.util.Date; import android.app.Activity; import android.content.Context; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.view.animation.Animation; import android.view.animation.Animation.AnimationListener; import android.view.animation.TranslateAnimation; import android.widget.ListView; /** * This demo flickers when the call to app.layout() is made. * * Not sure how to remove this flicker. */ public class SlideAnimationThenCallLayout extends Activity implements AnimationListener { View menu; View app; boolean menuOut = false; AnimParams animParams = new AnimParams(); class ClickListener implements OnClickListener { @Override public void onClick(View v) { System.out.println("onClick " + new Date()); SlideAnimationThenCallLayout me = SlideAnimationThenCallLayout.this; Context context = me; Animation anim; int w = app.getMeasuredWidth(); int h = app.getMeasuredHeight(); int left = (int) (app.getMeasuredWidth() * 0.8); if (!menuOut) { // anim = AnimationUtils.loadAnimation(context, R.anim.push_right_out_80); anim = new TranslateAnimation(0, left, 0, 0); menu.setVisibility(View.VISIBLE); animParams.init(left, 0, left + w, h); } else { // anim = AnimationUtils.loadAnimation(context, R.anim.push_left_in_80); anim = new TranslateAnimation(0, -left, 0, 0); animParams.init(0, 0, w, h); } anim.setDuration(500); anim.setAnimationListener(me); // Only use fillEnabled and fillAfter if we don't call layout ourselves. // We need to do the layout ourselves and not use fillEnabled and fillAfter because when the anim is finished // although the View appears to have moved, it is actually just a drawing effect and the View hasn't moved. // Therefore clicking on the screen where the button appears does not work, but clicking where the View *was* does // work. // anim.setFillEnabled(true); // anim.setFillAfter(true); app.startAnimation(anim); } } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.slide_animation_then_call_layout); menu = findViewById(R.id.menu); app = findViewById(R.id.app); ViewUtils.printView("menu", menu); ViewUtils.printView("app", app); ListView listView = (ListView) app.findViewById(R.id.list); ViewUtils.initListView(this, listView, "Item ", 30, android.R.layout.simple_list_item_1); app.findViewById(R.id.BtnSlide).setOnClickListener(new ClickListener()); } void layoutApp(boolean menuOut) { System.out.println("layout [" + animParams.left + "," + animParams.top + "," + animParams.right + "," + animParams.bottom + "]"); app.layout(animParams.left, animParams.top, animParams.right, animParams.bottom); } @Override public void onAnimationEnd(Animation animation) { System.out.println("onAnimationEnd"); ViewUtils.printView("menu", menu); ViewUtils.printView("app", app); menuOut = !menuOut; if (!menuOut) { menu.setVisibility(View.INVISIBLE); } layoutApp(menuOut); } @Override public void onAnimationRepeat(Animation animation) { System.out.println("onAnimationRepeat"); } @Override public void onAnimationStart(Animation animation) { System.out.println("onAnimationStart"); } static class AnimParams { int left, right, top, bottom; void init(int left, int top, int right, int bottom) { this.left = left; this.top = top; this.right = right; this.bottom = bottom; } } }