List of usage examples for android.widget RelativeLayout animate
public ViewPropertyAnimator animate()
From source file:com.tapcentive.sdk.actions.TapMessageFragment.java
/** * Animate the game.//from ww w . java 2 s . c o m * * @param view * the view * @param gameLayout * the game layout to animate * @param duration * the duration of the animation in ms */ @SuppressLint("NewApi") private void animateGame(final View view) { // stop screen from sleeping getActivity().getWindow().clearFlags(android.view.WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); RelativeLayout layout = (RelativeLayout) view.findViewById(R.id.winning_layout_portrait); ViewPropertyAnimator animator = layout.animate(); animator.translationYBy(-(1 + usableHeight)).setDuration(200); animator.setListener(new AnimatorListenerAdapter() { @Override public void onAnimationEnd(Animator animation) { TapcentiveLibrary.getInstance().setAnimatedWhenStopped(false); TapcentiveLibrary.getInstance().setAnimationInProcess(false); } }); }
From source file:edu.uark.spARK.SwipeDismissListViewTouchListener.java
@Override public boolean onTouch(View view, MotionEvent motionEvent) { if (mViewWidth < 2) { mViewWidth = mListView.getWidth(); }// w w w . j a v a 2s . c om switch (motionEvent.getActionMasked()) { case MotionEvent.ACTION_DOWN: { mPaused = false; longClickActive = false; // if (mPaused) { // return false; // } // TODO: ensure this is a finger, and set a flag // Find the child view that was touched (perform a hit test) Rect rect = new Rect(); int childCount = mListView.getChildCount(); int[] listViewCoords = new int[2]; mListView.getLocationOnScreen(listViewCoords); int x = (int) motionEvent.getRawX() - listViewCoords[0]; int y = (int) motionEvent.getRawY() - listViewCoords[1]; View child; //ignore header views for (int i = 1; i < childCount; i++) { child = mListView.getChildAt(i); child.getHitRect(rect); if (rect.contains(x, y)) { mDownView = child; break; } } if (mDownView != null) { mDownView = mDownView.findViewById(R.id.table); mDownX = motionEvent.getRawX(); //TODO: really need to figure out why npe is happening here try { mDownPosition = mListView.getPositionForView(mDownView); } catch (NullPointerException npe) { //why does this keep happening? npe.printStackTrace(); } if (mCallbacks.canDismiss(mDownPosition)) { mVelocityTracker = VelocityTracker.obtain(); mVelocityTracker.addMovement(motionEvent); } else { mDownView = null; } } view.onTouchEvent(motionEvent); return true; } case MotionEvent.ACTION_UP: { if (longClickActive) { RelativeLayout darkenTop = (RelativeLayout) mListView.getRootView() .findViewById(R.id.darkenScreenTop); ImageView darkenBottom = (ImageView) mListView.getRootView().findViewById(R.id.darkenScreenBottom); darkenTop.animate().alpha(0).setDuration(mAnimationTime).setListener(null); darkenBottom.animate().alpha(0).setDuration(mAnimationTime).setListener(null); if (mVelocityTracker == null) { break; } float deltaX = motionEvent.getRawX() - mDownX; mVelocityTracker.addMovement(motionEvent); mVelocityTracker.computeCurrentVelocity(1000); float velocityX = mVelocityTracker.getXVelocity(); float absVelocityX = Math.abs(velocityX); float absVelocityY = Math.abs(mVelocityTracker.getYVelocity()); boolean dismiss = false; boolean dismissRight = false; if (Math.abs(deltaX) > mViewWidth / 2) { dismiss = true; dismissRight = deltaX > 0; } else if (mMinFlingVelocity <= absVelocityX && absVelocityX <= mMaxFlingVelocity && absVelocityY < absVelocityX) { // dismiss only if flinging in the same direction as dragging dismiss = (velocityX < 0) == (deltaX < 0); dismissRight = mVelocityTracker.getXVelocity() > 0; } if (dismiss) { // dismiss dismiss(mDownView, mDownPosition, dismissRight); } else { // cancel mDownView.animate().translationX(0).alpha(1).setDuration(mAnimationTime).setListener(null); } mVelocityTracker.recycle(); mVelocityTracker = null; mDownX = 0; mDownView = null; mDownPosition = ListView.INVALID_POSITION; mSwiping = false; } break; } case MotionEvent.ACTION_CANCEL: { longClickActive = false; mPaused = false; RelativeLayout darkenTop = (RelativeLayout) mListView.getRootView().findViewById(R.id.darkenScreenTop); ImageView darkenBottom = (ImageView) mListView.getRootView().findViewById(R.id.darkenScreenBottom); darkenTop.animate().alpha(0).setDuration(mAnimationTime).setListener(null); darkenBottom.animate().alpha(0).setDuration(mAnimationTime).setListener(null); if (mVelocityTracker == null) { break; } if (mDownView != null) { // cancel mDownView.animate().translationX(0).alpha(1).setDuration(mAnimationTime).setListener(null); } mVelocityTracker.recycle(); mVelocityTracker = null; mDownX = 0; mDownView = null; mDownPosition = ListView.INVALID_POSITION; mSwiping = false; break; } case MotionEvent.ACTION_MOVE: { if (mVelocityTracker == null || mPaused) { break; } if (longClickActive) { mVelocityTracker.addMovement(motionEvent); float deltaX = motionEvent.getRawX() - mDownX; //the if statement is allowing the listview to scroll until a sufficient deltaX is made, while we want swiping immediately // if (Math.abs(deltaX) > mSlop) { mSwiping = true; mListView.requestDisallowInterceptTouchEvent(true); // Cancel ListView's touch (un-highlighting the item) which is not what we want MotionEvent cancelEvent = MotionEvent.obtain(motionEvent); cancelEvent.setAction(MotionEvent.ACTION_CANCEL | (motionEvent.getActionIndex() << MotionEvent.ACTION_POINTER_INDEX_SHIFT)); mListView.onTouchEvent(cancelEvent); cancelEvent.recycle(); // } if (mSwiping) { mDownView.setTranslationX(deltaX); //we don't want the alpha to change // mDownView.setAlpha(Math.max(0.15f, Math.min(1f, // 1f - 2f * Math.abs(deltaX) / mViewWidth))); return true; } } break; } } return false; }
From source file:com.npi.muzeiflickr.ui.activities.SettingsActivity.java
private void populateFooter(View footerView) { final View footerButton = footerView.findViewById(R.id.list_footer_button); final Spinner footerModeChooser = (Spinner) footerView.findViewById(R.id.mode_chooser); final RelativeLayout addItemContainer = (RelativeLayout) footerView.findViewById(R.id.new_item_container); final ImageButton footerSearchButton = (ImageButton) footerView.findViewById(R.id.footer_search_button); final ProgressBar footerProgress = (ProgressBar) footerView.findViewById(R.id.footer_progress); final EditText footerTerm = (EditText) footerView.findViewById(R.id.footer_term); footerButton.setOnLongClickListener(new View.OnLongClickListener() { @Override/*ww w . j av a 2 s .com*/ public boolean onLongClick(View v) { int[] pos = new int[2]; footerButton.getLocationInWindow(pos); String contentDesc = footerButton.getContentDescription().toString(); Toast t = Toast.makeText(SettingsActivity.this, contentDesc, Toast.LENGTH_SHORT); t.show(); t.setGravity(Gravity.TOP | Gravity.CENTER_HORIZONTAL, 0, pos[1] + (footerButton.getHeight() / 2)); return true; } }); footerButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { addItemContainer.animate().alpha(1F); footerButton.animate().alpha(0F); } }); //Mode spinner management ArrayAdapter<CharSequence> adapter = new SourceSpinnerAdapter(this, android.R.layout.simple_spinner_item, getResources().getStringArray(R.array.modes)); footerModeChooser.setAdapter(adapter); footerSearchButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String searchString = footerTerm.getText().toString(); switch (footerModeChooser.getSelectedItemPosition()) { case 0: //It's a search //Looking for a same existing search List<Search> searchs = Search.listAll(Search.class); for (Search search : searchs) { if (search.getTitle().equals(searchString)) { Toast.makeText(SettingsActivity.this, getString(R.string.search_exists), Toast.LENGTH_LONG).show(); return; } } footerSearchButton.setVisibility(View.GONE); footerProgress.setVisibility(View.VISIBLE); getSearch(searchString, new UserInfoListener<Search>() { @Override public void onSuccess(Search search) { mRequestAdapter.add(search); mRequestAdapter.notifyDataSetChanged(); footerSearchButton.setVisibility(View.VISIBLE); footerProgress.setVisibility(View.GONE); footerTerm.setText(""); footerModeChooser.setSelection(0); addItemContainer.animate().alpha(0F); footerButton.animate().alpha(1F); } @Override public void onError(String reason) { Toast.makeText(SettingsActivity.this, reason, Toast.LENGTH_LONG).show(); footerSearchButton.setVisibility(View.VISIBLE); footerProgress.setVisibility(View.GONE); } }); break; case 1: //It's an user //Looking for a same existing search List<User> users = User.listAll(User.class); for (User user : users) { if (user.getTitle().equals(searchString)) { Toast.makeText(SettingsActivity.this, getString(R.string.user_exists), Toast.LENGTH_LONG).show(); return; } } footerSearchButton.setVisibility(View.GONE); footerProgress.setVisibility(View.VISIBLE); getUserId(searchString, new UserInfoListener<User>() { @Override public void onSuccess(User user) { mRequestAdapter.add(user); mRequestAdapter.notifyDataSetChanged(); footerSearchButton.setVisibility(View.VISIBLE); footerProgress.setVisibility(View.GONE); footerTerm.setText(""); footerModeChooser.setSelection(0); addItemContainer.animate().alpha(0F); footerButton.animate().alpha(1F); } @Override public void onError(String reason) { Toast.makeText(SettingsActivity.this, reason, Toast.LENGTH_LONG).show(); footerSearchButton.setVisibility(View.VISIBLE); footerProgress.setVisibility(View.GONE); } }); break; case 2: //It's a tag //Looking for a same existing search List<Tag> tags = Tag.listAll(Tag.class); for (Tag tag : tags) { if (tag.getTitle().equals(searchString)) { Toast.makeText(SettingsActivity.this, getString(R.string.user_exists), Toast.LENGTH_LONG).show(); return; } } footerSearchButton.setVisibility(View.GONE); footerProgress.setVisibility(View.VISIBLE); getTag(searchString, new UserInfoListener<Tag>() { @Override public void onSuccess(Tag tag) { mRequestAdapter.add(tag); mRequestAdapter.notifyDataSetChanged(); footerSearchButton.setVisibility(View.VISIBLE); footerProgress.setVisibility(View.GONE); footerTerm.setText(""); footerModeChooser.setSelection(0); addItemContainer.animate().alpha(0F); footerButton.animate().alpha(1F); } @Override public void onError(String reason) { Toast.makeText(SettingsActivity.this, reason, Toast.LENGTH_LONG).show(); footerSearchButton.setVisibility(View.VISIBLE); footerProgress.setVisibility(View.GONE); } }); break; case 3: //It's an user //Looking for a same existing search List<FGroup> groups = FGroup.listAll(FGroup.class); for (FGroup group : groups) { if (group.getTitle().equals(searchString)) { Toast.makeText(SettingsActivity.this, getString(R.string.group_exists), Toast.LENGTH_LONG).show(); return; } } footerSearchButton.setVisibility(View.GONE); footerProgress.setVisibility(View.VISIBLE); getGroupId(searchString, new UserInfoListener<FGroup>() { @Override public void onSuccess(FGroup group) { mRequestAdapter.add(group); mRequestAdapter.notifyDataSetChanged(); footerSearchButton.setVisibility(View.VISIBLE); footerProgress.setVisibility(View.GONE); footerTerm.setText(""); footerModeChooser.setSelection(0); addItemContainer.animate().alpha(0F); footerButton.animate().alpha(1F); } @Override public void onError(String reason) { Toast.makeText(SettingsActivity.this, reason, Toast.LENGTH_LONG).show(); footerSearchButton.setVisibility(View.VISIBLE); footerProgress.setVisibility(View.GONE); } }); break; } } }); }