use of android.support.v7.widget.helper.ItemTouchHelper.END in project wigle-wifi-wardriving by wiglenet.
the class MainActivity method setupMenuDrawer.
private void setupMenuDrawer() {
// set up drawer menu
final String[] menuTitles = new String[] { getString(R.string.tab_list), getString(R.string.tab_map), getString(R.string.tab_dash), getString(R.string.tab_data), getString(R.string.tab_news), getString(R.string.tab_rank), getString(R.string.tab_stats), getString(R.string.tab_uploads), getString(R.string.menu_settings), getString(R.string.menu_exit) };
final int[] menuIcons = new int[] { android.R.drawable.ic_menu_sort_by_size, android.R.drawable.ic_menu_mapmode, android.R.drawable.ic_menu_directions, android.R.drawable.ic_menu_save, android.R.drawable.ic_menu_agenda, android.R.drawable.ic_menu_sort_alphabetically, android.R.drawable.ic_menu_today, android.R.drawable.ic_menu_upload, android.R.drawable.ic_menu_preferences, android.R.drawable.ic_delete };
mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
mDrawerList = (ListView) findViewById(R.id.left_drawer);
// Set the adapter for the list view
mDrawerList.setAdapter(new ArrayAdapter<String>(this, R.layout.drawer_list_item, R.id.drawer_list_text, menuTitles) {
@Override
public View getView(int position, View convertView, ViewGroup parent) {
final LayoutInflater inflater = LayoutInflater.from(MainActivity.this);
View view;
if (convertView == null) {
view = inflater.inflate(R.layout.drawer_list_item, parent, false);
} else {
view = convertView;
}
final TextView text = (TextView) view.findViewById(R.id.drawer_list_text);
text.setText(menuTitles[position]);
// If that's the Exit button, set the background to red
if (position == EXIT_TAB_POS) {
view.setBackgroundColor(Color.argb(200, 70, 0, 0));
} else {
view.setBackgroundColor(0);
}
final ImageView image = (ImageView) view.findViewById(R.id.drawer_list_icon);
image.setImageResource(menuIcons[position]);
return view;
}
});
// Set the list's click listener
mDrawerList.setOnItemClickListener(new DrawerItemClickListener());
mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
mDrawerToggle = new ActionBarDrawerToggle(this, /* host Activity */
mDrawerLayout, /* DrawerLayout object */
R.string.drawer_open, /* "open drawer" description */
R.string.drawer_close) {
/* "close drawer" description */
/**
* Called when a drawer has settled in a completely closed state.
*/
public void onDrawerClosed(View view) {
super.onDrawerClosed(view);
}
/**
* Called when a drawer has settled in a completely open state.
*/
public void onDrawerOpened(View drawerView) {
super.onDrawerOpened(drawerView);
final ActionBar actionBar = getSupportActionBar();
if (actionBar != null)
actionBar.setTitle("Menu");
}
};
// Set the drawer toggle as the DrawerListener
mDrawerLayout.setDrawerListener(mDrawerToggle);
final ActionBar actionBar = getSupportActionBar();
if (actionBar != null) {
actionBar.setDisplayHomeAsUpEnabled(true);
actionBar.setHomeButtonEnabled(true);
}
// end drawer setup
}
use of android.support.v7.widget.helper.ItemTouchHelper.END in project packages_apps_AicpExtras by AICP.
the class ChangelogActivity method onCreate.
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Fabric.with(this, new Crashlytics());
setContentView(R.layout.changelog_activity);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
toolbar.setTitle(R.string.changelog_name);
setSupportActionBar(toolbar);
RecyclerView recyclerView = (RecyclerView) findViewById(R.id.changelog);
recyclerView.setHasFixedSize(true);
ArrayList<ChangelogItem> changeLogArray = new ArrayList<>();
try {
SimpleDateFormat sdf = new SimpleDateFormat("MM-dd-yyyy", Locale.ENGLISH);
Date date;
Date nowDate = new Date();
BufferedReader reader = new BufferedReader(new FileReader(CHANGELOG_PATH));
String line;
String directory = "";
String commits = "";
boolean checknext = false;
while ((line = reader.readLine()) != null) {
if (!line.matches("={20}") && !Objects.equals(line.trim(), "")) {
if (line.matches(" (\\d\\d\\-\\d\\d\\-\\d{4})")) {
// it's date
date = sdf.parse(line.trim());
long now = nowDate.getTime();
long time = date.getTime();
final long diff = now - time;
String timeString;
if (diff < 1000 * 60 * 60 * 24) {
timeString = "Today";
} else if (diff < 1000 * 60 * 60 * 24 * 2) {
timeString = "Yesterday";
} else if (diff < 1000 * 60 * 60 * 24 * 3) {
timeString = "Two days ago";
} else if (diff < 1000 * 60 * 60 * 24 * 4) {
timeString = "Three days ago";
} else if (diff < 1000 * 60 * 60 * 24 * 5) {
timeString = "Four days ago";
} else if (diff < 1000 * 60 * 60 * 24 * 6) {
timeString = "Five days ago";
} else if (diff < 1000 * 60 * 60 * 24 * 7) {
timeString = "Six days ago";
} else if (diff < 1000 * 60 * 60 * 24 * 14) {
timeString = "A week ago";
} else if (diff < 1000 * 60 * 60 * 24 * 21) {
timeString = "Two weeks ago";
} else if (diff < 1000L * 60 * 60 * 24 * 28) {
timeString = "Three weeks ago";
} else {
timeString = line.trim().replaceAll("-", "/");
}
changeLogArray.add(new ChangelogItem(timeString));
} else if (line.matches("^\\s*( \\* )\\S*")) {
// it's directory
if (checknext) {
// remove lf on end
commits = commits.substring(0, commits.lastIndexOf("\n\n"));
changeLogArray.add(new ChangelogItem(directory, commits));
// reset commits
commits = "";
checknext = false;
} else {
checknext = true;
commits = "";
}
directory = line.replaceAll("( \\* )", "");
} else {
final String re = "^([a-f0-9]{1,12}) ";
line = line.replaceFirst(re, "");
commits += line + "\n\n";
checknext = true;
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
ChangeLogAdapter adapter = new ChangeLogAdapter(this, changeLogArray);
recyclerView.setAdapter(adapter);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
}
use of android.support.v7.widget.helper.ItemTouchHelper.END in project actor-platform by actorapp.
the class CustomItemAnimator method endAnimation.
@Override
public void endAnimation(ViewHolder item) {
final View view = item.itemView;
// this will trigger end callback which should set properties to their target values.
ViewCompat.animate(view).cancel();
// TODO if some other animations are chained to end, how do we cancel them as well?
for (int i = mPendingMoves.size() - 1; i >= 0; i--) {
MoveInfo moveInfo = mPendingMoves.get(i);
if (moveInfo.holder == item) {
ViewCompat.setTranslationY(view, 0);
ViewCompat.setTranslationX(view, 0);
dispatchMoveFinished(item);
mPendingMoves.remove(i);
}
}
endChangeAnimation(mPendingChanges, item);
if (mPendingRemovals.remove(item)) {
ViewCompat.setAlpha(view, 1);
dispatchRemoveFinished(item);
}
if (mPendingAdditions.remove(item)) {
ViewCompat.setAlpha(view, 1);
dispatchAddFinished(item);
}
for (int i = mChangesList.size() - 1; i >= 0; i--) {
ArrayList<ChangeInfo> changes = mChangesList.get(i);
endChangeAnimation(changes, item);
if (changes.isEmpty()) {
mChangesList.remove(i);
}
}
for (int i = mMovesList.size() - 1; i >= 0; i--) {
ArrayList<MoveInfo> moves = mMovesList.get(i);
for (int j = moves.size() - 1; j >= 0; j--) {
MoveInfo moveInfo = moves.get(j);
if (moveInfo.holder == item) {
ViewCompat.setTranslationY(view, 0);
ViewCompat.setTranslationX(view, 0);
dispatchMoveFinished(item);
moves.remove(j);
if (moves.isEmpty()) {
mMovesList.remove(i);
}
break;
}
}
}
for (int i = mAdditionsList.size() - 1; i >= 0; i--) {
ArrayList<ViewHolder> additions = mAdditionsList.get(i);
if (additions.remove(item)) {
ViewCompat.setAlpha(view, 1);
dispatchAddFinished(item);
if (additions.isEmpty()) {
mAdditionsList.remove(i);
}
}
}
// noinspection PointlessBooleanExpression,ConstantConditions
if (mRemoveAnimations.remove(item) && DEBUG) {
throw new IllegalStateException("after animation is cancelled, item should not be in " + "mRemoveAnimations list");
}
// noinspection PointlessBooleanExpression,ConstantConditions
if (mAddAnimations.remove(item) && DEBUG) {
throw new IllegalStateException("after animation is cancelled, item should not be in " + "mAddAnimations list");
}
// noinspection PointlessBooleanExpression,ConstantConditions
if (mChangeAnimations.remove(item) && DEBUG) {
throw new IllegalStateException("after animation is cancelled, item should not be in " + "mChangeAnimations list");
}
// noinspection PointlessBooleanExpression,ConstantConditions
if (mMoveAnimations.remove(item) && DEBUG) {
throw new IllegalStateException("after animation is cancelled, item should not be in " + "mMoveAnimations list");
}
dispatchFinishedWhenDone();
}
use of android.support.v7.widget.helper.ItemTouchHelper.END in project iosched by google.
the class MyIOAdapter method setItems.
void setItems(List<ScheduleItem> items) {
List<Object> newData = new ArrayList<>();
MessageData notSignedInCard = MessageCardHelper.notSignedInCard();
notSignedInCard.setStartButtonClickListener(new OnClickListener() {
@Override
public void onClick(final View view) {
WelcomeUtils.markHidePostOnboardingCard(mContext);
}
});
notSignedInCard.setEndButtonClickListener(new OnClickListener() {
@Override
public void onClick(final View view) {
WelcomeUtils.markHidePostOnboardingCard(mContext);
((MyIOActivity) mContext).signIn();
}
});
MessageData signedInMessageCard = MessageCardHelper.signedInMessageCard();
signedInMessageCard.setStartButtonClickListener(new OnClickListener() {
@Override
public void onClick(final View view) {
WelcomeUtils.markHidePostOnboardingCard(mContext);
}
});
if (WelcomeUtils.showPostOnboardingCard(mContext)) {
if (AccountUtils.hasActiveAccount(mContext)) {
newData.add(signedInMessageCard);
} else {
newData.add(notSignedInCard);
}
}
int day = 0;
if (items != null && !items.isEmpty()) {
// Add the items to our list, interleaving separators as we go
long separatorTime = DAY_SEPARATORS.get(day).mStartTime;
for (ScheduleItem item : items) {
if (item.startTime >= separatorTime) {
// add the separator first
newData.add(new SeparatorSpacer());
newData.add(DAY_SEPARATORS.get(day));
day++;
if (day >= DAY_SEPARATORS.size()) {
// run the list to the end
separatorTime = Long.MAX_VALUE;
} else {
separatorTime = DAY_SEPARATORS.get(day).mStartTime;
}
}
// Add the item
newData.add(item);
}
}
// Add any remaining separators
for (; day < DAY_SEPARATORS.size(); day++) {
newData.add(new SeparatorSpacer());
newData.add(DAY_SEPARATORS.get(day));
}
DiffUtil.DiffResult diff = DiffUtil.calculateDiff(new MyIoDiff(mItems, newData));
mItems.clear();
mItems.addAll(newData);
diff.dispatchUpdatesTo(this);
}
use of android.support.v7.widget.helper.ItemTouchHelper.END in project android-parallax-recyclerview by kanytu.
the class HeaderLayoutManagerFixed method onLayoutChildren.
/**
* {@inheritDoc}
*/
@Override
public void onLayoutChildren(RecyclerView.Recycler recycler, RecyclerView.State state) {
// create render state
if (DEBUG) {
Log.d(TAG, "is pre layout:" + state.isPreLayout());
}
if (mPendingSavedState != null) {
setOrientation(mPendingSavedState.mOrientation);
setReverseLayout(mPendingSavedState.mReverseLayout);
setStackFromEnd(mPendingSavedState.mStackFromEnd);
mPendingScrollPosition = mPendingSavedState.mAnchorPosition;
}
ensureRenderState();
// resolve layout direction
resolveShouldLayoutReverse();
// validate scroll position if exists
if (mPendingScrollPosition != RecyclerView.NO_POSITION) {
// validate it
if (mPendingScrollPosition < 0 || mPendingScrollPosition >= state.getItemCount()) {
mPendingScrollPosition = RecyclerView.NO_POSITION;
mPendingScrollPositionOffset = INVALID_OFFSET;
if (DEBUG) {
Log.e(TAG, "ignoring invalid scroll position " + mPendingScrollPosition);
}
}
}
// this value might be updated if there is a target scroll position without an offset
boolean layoutFromEnd = mShouldReverseLayout ^ mStackFromEnd;
final boolean stackFromEndChanged = mLastStackFromEnd != mStackFromEnd;
int anchorCoordinate, anchorItemPosition;
if (mPendingScrollPosition != RecyclerView.NO_POSITION) {
// if child is visible, try to make it a reference child and ensure it is fully visible.
// if child is not visible, align it depending on its virtual position.
anchorItemPosition = mPendingScrollPosition;
if (mPendingSavedState != null) {
// Anchor offset depends on how that child was laid out. Here, we update it
// according to our current view bounds
layoutFromEnd = mPendingSavedState.mAnchorLayoutFromEnd;
if (layoutFromEnd) {
anchorCoordinate = mOrientationHelper.getEndAfterPadding() - mPendingSavedState.mAnchorOffset;
} else {
anchorCoordinate = mOrientationHelper.getStartAfterPadding() + mPendingSavedState.mAnchorOffset;
}
} else if (mPendingScrollPositionOffset == INVALID_OFFSET) {
View child = findViewByPosition(mPendingScrollPosition);
if (child != null) {
final int startGap = mOrientationHelper.getDecoratedStart(child) - mOrientationHelper.getStartAfterPadding();
final int endGap = mOrientationHelper.getEndAfterPadding() - mOrientationHelper.getDecoratedEnd(child);
final int childSize = mOrientationHelper.getDecoratedMeasurement(child);
if (childSize > mOrientationHelper.getTotalSpace()) {
// item does not fit. fix depending on layout direction
anchorCoordinate = layoutFromEnd ? mOrientationHelper.getEndAfterPadding() : mOrientationHelper.getStartAfterPadding();
} else if (startGap < 0) {
anchorCoordinate = mOrientationHelper.getStartAfterPadding();
layoutFromEnd = false;
} else if (endGap < 0) {
anchorCoordinate = mOrientationHelper.getEndAfterPadding();
layoutFromEnd = true;
} else {
anchorCoordinate = layoutFromEnd ? mOrientationHelper.getDecoratedEnd(child) : mOrientationHelper.getDecoratedStart(child);
}
} else {
// item is not visible.
if (getChildCount() > 0) {
// get position of any child, does not matter
int pos = getPosition(getChildAt(0));
if (mPendingScrollPosition < pos == mShouldReverseLayout) {
anchorCoordinate = mOrientationHelper.getEndAfterPadding();
layoutFromEnd = true;
} else {
anchorCoordinate = mOrientationHelper.getStartAfterPadding();
layoutFromEnd = false;
}
} else {
anchorCoordinate = layoutFromEnd ? mOrientationHelper.getEndAfterPadding() : mOrientationHelper.getStartAfterPadding();
}
}
} else {
// override layout from end values for consistency
if (mShouldReverseLayout) {
anchorCoordinate = mOrientationHelper.getEndAfterPadding() - mPendingScrollPositionOffset;
layoutFromEnd = true;
} else {
anchorCoordinate = mOrientationHelper.getStartAfterPadding() + mPendingScrollPositionOffset;
layoutFromEnd = false;
}
}
} else if (getChildCount() > 0 && !stackFromEndChanged) {
if (layoutFromEnd) {
View referenceChild = getChildClosestToEnd();
anchorCoordinate = mOrientationHelper.getDecoratedEnd(referenceChild);
anchorItemPosition = getPosition(referenceChild);
} else {
View referenceChild = getChildClosestToStart();
anchorCoordinate = mOrientationHelper.getDecoratedStart(referenceChild);
anchorItemPosition = getPosition(referenceChild);
}
} else {
anchorCoordinate = layoutFromEnd ? mOrientationHelper.getEndAfterPadding() : mOrientationHelper.getStartAfterPadding();
anchorItemPosition = mStackFromEnd ? state.getItemCount() - 1 : 0;
}
detachAndScrapAttachedViews(recycler);
final int extraForStart;
final int extraForEnd;
final int extra = getExtraLayoutSpace(state);
boolean before = state.getTargetScrollPosition() < anchorItemPosition;
if (before == mShouldReverseLayout) {
extraForEnd = extra;
extraForStart = 0;
} else {
extraForStart = extra;
extraForEnd = 0;
}
// first fill towards start
updateRenderStateToFillStart(anchorItemPosition, anchorCoordinate);
mRenderState.mExtra = extraForStart;
if (!layoutFromEnd) {
mRenderState.mCurrentPosition += mRenderState.mItemDirection;
}
fill(recycler, mRenderState, state, false);
int startOffset = mRenderState.mOffset;
// fill towards end
updateRenderStateToFillEnd(anchorItemPosition, anchorCoordinate);
mRenderState.mExtra = extraForEnd;
if (layoutFromEnd) {
mRenderState.mCurrentPosition += mRenderState.mItemDirection;
}
fill(recycler, mRenderState, state, false);
int endOffset = mRenderState.mOffset;
// changes may cause gaps on the UI, try to fix them.
if (getChildCount() > 0) {
// find which side we should check for gaps.
if (mShouldReverseLayout ^ mStackFromEnd) {
int fixOffset = fixLayoutEndGap(endOffset, recycler, state, true);
startOffset += fixOffset;
endOffset += fixOffset;
fixOffset = fixLayoutStartGap(startOffset, recycler, state, false);
startOffset += fixOffset;
endOffset += fixOffset;
} else {
int fixOffset = fixLayoutStartGap(startOffset, recycler, state, true);
startOffset += fixOffset;
endOffset += fixOffset;
fixOffset = fixLayoutEndGap(endOffset, recycler, state, false);
startOffset += fixOffset;
endOffset += fixOffset;
}
}
// another view out of bounds.
if (getChildCount() > 0 && !state.isPreLayout() && supportsPredictiveItemAnimations()) {
// to make the logic simpler, we calculate the size of children and call fill.
int scrapExtraStart = 0, scrapExtraEnd = 0;
final List<RecyclerView.ViewHolder> scrapList = recycler.getScrapList();
final int scrapSize = scrapList.size();
final int firstChildPos = getPosition(getChildAt(0));
for (int i = 0; i < scrapSize; i++) {
RecyclerView.ViewHolder scrap = scrapList.get(i);
final int position = scrap.getPosition();
final int direction = position < firstChildPos != mShouldReverseLayout ? RenderState.LAYOUT_START : RenderState.LAYOUT_END;
if (direction == RenderState.LAYOUT_START) {
scrapExtraStart += mOrientationHelper.getDecoratedMeasurement(scrap.itemView);
} else {
scrapExtraEnd += mOrientationHelper.getDecoratedMeasurement(scrap.itemView);
}
}
if (DEBUG) {
Log.d(TAG, "for unused scrap, decided to add " + scrapExtraStart + " towards start and " + scrapExtraEnd + " towards end");
}
mRenderState.mScrapList = scrapList;
if (scrapExtraStart > 0) {
View anchor = getChildClosestToStart();
updateRenderStateToFillStart(getPosition(anchor), startOffset);
mRenderState.mExtra = scrapExtraStart;
mRenderState.mAvailable = 0;
mRenderState.mCurrentPosition += mShouldReverseLayout ? 1 : -1;
fill(recycler, mRenderState, state, false);
}
if (scrapExtraEnd > 0) {
View anchor = getChildClosestToEnd();
updateRenderStateToFillEnd(getPosition(anchor), endOffset);
mRenderState.mExtra = scrapExtraEnd;
mRenderState.mAvailable = 0;
mRenderState.mCurrentPosition += mShouldReverseLayout ? -1 : 1;
fill(recycler, mRenderState, state, false);
}
mRenderState.mScrapList = null;
}
mPendingScrollPosition = RecyclerView.NO_POSITION;
mPendingScrollPositionOffset = INVALID_OFFSET;
mLastStackFromEnd = mStackFromEnd;
// we don't need this anymore
mPendingSavedState = null;
if (DEBUG) {
validateChildOrder();
}
}
Aggregations