private void createListView() { root = (FrameLayout) inflater.inflate(R.layout.qrh__listview_container, null); root.addView(content); listView.getViewTreeObserver().addOnGlobalLayoutListener(this); ListViewScrollObserver observer = new ListViewScrollObserver(listView); // listView.setOnScrollListener(this); observer.setOnScrollUpAndDownListener( new OnListViewScrollListener() { @Override public void onScrollUpDownChanged(int delta, int scrollPosition, boolean exact) { onNewScroll(delta); snap(headerTop == scrollPosition); } @Override public void onScrollIdle() { QuickReturnHeaderHelper.this.onScrollIdle(); } }); root.addView(realHeader, realHeaderLayoutParams); dummyHeader = new View(context); AbsListView.LayoutParams params = new AbsListView.LayoutParams(LayoutParams.MATCH_PARENT, headerHeight); dummyHeader.setLayoutParams(params); listView.addHeaderView(dummyHeader); }
public void testRemoveOnComputeInternalInsetsListener() { final ListView lv1 = (ListView) mActivity.findViewById(R.id.listview1); mViewTreeObserver = lv1.getViewTreeObserver(); MockOnComputeInternalInsetsListener listener = new MockOnComputeInternalInsetsListener(); mViewTreeObserver.removeOnComputeInternalInsetsListener(listener); }
private void fixLayout() { if (listView != null) { ViewTreeObserver obs = listView.getViewTreeObserver(); obs.addOnPreDrawListener( new ViewTreeObserver.OnPreDrawListener() { @Override public boolean onPreDraw() { fixLayoutInternal(); if (listView != null) { listView.getViewTreeObserver().removeOnPreDrawListener(this); } return true; } }); } }
void refresh(View v) { if (mTags == null && mAlbum == null) { Intent intent = getActivity().getIntent(); mTags = intent != null ? intent.getStringExtra(EXTRA_TAG) : null; mAlbum = intent != null ? intent.getStringExtra(EXTRA_ALBUM) : null; } if (mTags != null || mAlbum != null) { mAdapter = new GalleryAdapterExt(mTags, mAlbum); removeTagsAndAlbumInformationFromActivityIntent(); } else { mAdapter = new GalleryAdapterExt(); } final ListView photosGrid = (ListView) v.findViewById(R.id.list_photos); photosGrid .getViewTreeObserver() .addOnGlobalLayoutListener( new ViewTreeObserver.OnGlobalLayoutListener() { int lastHeight = 0; @Override public void onGlobalLayout() { if (mAdapter != null && (mAdapter.imageFlowUtils.getTotalWidth() != photosGrid.getWidth() || photosGrid.getHeight() != lastHeight)) { CommonUtils.debug(TAG, "Reinit grid groups"); mAdapter.imageFlowUtils.buildGroups( photosGrid.getWidth(), mImageThumbSize, photosGrid.getHeight() - 2 * (mImageThumbBorder + mImageThumbSpacing), mImageThumbBorder + mImageThumbSpacing); mAdapter.notifyDataSetChanged(); lastHeight = photosGrid.getHeight(); } } }); photosGrid.setAdapter(mAdapter); }
private void animateRemoval(final ListView listview, View viewToRemove) { int firstVisiblePosition = listview.getFirstVisiblePosition(); for (int i = 0; i < listview.getChildCount(); ++i) { View child = listview.getChildAt(i); if (child != viewToRemove) { int position = firstVisiblePosition + i; long itemId = listview.getAdapter().getItemId(position); mItemIdTopMap.put(itemId, child.getTop()); } } // Delete the item from the adapter LocalAdapter.ChildViewHolder childViewHolder = (LocalAdapter.ChildViewHolder) viewToRemove.getTag(); ((LocalAdapter) getExpandableListAdapter()) .remove(childViewHolder.groupPosition, viewToRemove); new WriteToDatabaseTask(LocalLyricsFragment.this) .execute(LocalLyricsFragment.this, null, childViewHolder.lyrics); final ViewTreeObserver observer = listview.getViewTreeObserver(); observer.addOnPreDrawListener( new ViewTreeObserver.OnPreDrawListener() { public boolean onPreDraw() { observer.removeOnPreDrawListener(this); boolean firstAnimation = true; int firstVisiblePosition = listview.getFirstVisiblePosition(); for (int i = 0; i < listview.getChildCount(); ++i) { final View child = listview.getChildAt(i); int position = firstVisiblePosition + i; long itemId = getListView().getAdapter().getItemId(position); Integer formerTop = mItemIdTopMap.get(itemId); int newTop = child.getTop(); if (formerTop != null) { if (formerTop != newTop) { int delta = formerTop - newTop; child.setTranslationY(delta); int MOVE_DURATION = 500; child.animate().setDuration(MOVE_DURATION).translationY(0); if (firstAnimation) { child .animate() .setListener( new AnimatorActionListener( new Runnable() { public void run() { mBackgroundContainer.hideBackground(); mSwiping = false; getListView().setEnabled(true); } }, AnimatorActionListener.ActionType.END)); firstAnimation = false; } } } else { // Animate new views along with the others. The catch is that they did not // exist in the start state, so we must calculate their starting position // based on neighboring views. int childHeight = child.getHeight() + listview.getDividerHeight(); formerTop = newTop + (i > 0 ? childHeight : -childHeight); int delta = formerTop - newTop; child.setTranslationY(delta); int MOVE_DURATION = 500; child.animate().setDuration(MOVE_DURATION).translationY(0); if (firstAnimation) { child .animate() .setListener( new AnimatorActionListener( new Runnable() { public void run() { mBackgroundContainer.hideBackground(); mSwiping = false; getListView().setEnabled(true); } }, AnimatorActionListener.ActionType.END)); firstAnimation = false; } } } mBackgroundContainer.hideBackground(); mItemIdTopMap.clear(); return true; } }); }
@Override protected void onCreate(Bundle savedInstanceState) { // Get settings provider mSettings = SettingsProvider.getInstance(this); // Check language Log.d(MainActivity.class.getName(), "Set locale in onCreate"); setLocale(); // Set flag indicating we are in oncreate mOnResumeDirectlyAfterOnCreate = true; // Now go on super.onCreate(savedInstanceState); setContentView(R.layout.mainactivity); // Check if observer have to be started if (mSettings.getBackgroundObserverEnabled()) { // Start foreground service Intent startIntent = new Intent(this, ForeGroundService.class); startIntent.setAction(ForeGroundService.FOREGROUNDSERVICE_START); startService(startIntent); } // Get base linear layout mMainLayout = (LinearLayout) findViewById(R.id.linearLayoutMain); // Check if background image have to be set WallpaperSelectDialog selectDialog = new WallpaperSelectDialog(this); selectDialog.setWallpaper(false); // Get linear layout for semi-transparent background mSemiTransparentLayout = (LinearLayout) findViewById(R.id.linearLayoutSemiTransparentBackground); // Get clock and date mTextViewClock = (TextView) findViewById(R.id.textViewClock); mTextViewDate = (TextView) findViewById(R.id.textViewDate); // Get ListView mListView = (ListView) findViewById(R.id.listView); // Handle item click listener mListView.setOnItemClickListener( new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { Log.d( MainActivity.class.getName(), "OnItemClickListener: clicked position " + position); handleLeftBarItemSelection(parent, view, position, id); } }); // Handle item selected changes mListView.setOnItemSelectedListener( new AdapterView.OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { Log.d( MainActivity.class.getName(), "OnItemSelectedListener: selected position " + position); handleLeftBarItemSelection(parent, view, position, id); } @Override public void onNothingSelected(AdapterView<?> parent) {} }); // Set adapter LeftBarItemsListAdapter actAdapter = new LeftBarItemsListAdapter(this); mListView.setAdapter(actAdapter); // Focus first item mListView .getViewTreeObserver() .addOnGlobalLayoutListener( new ViewTreeObserver.OnGlobalLayoutListener() { @Override public void onGlobalLayout() { try { // Remove listener mListView.getViewTreeObserver().removeOnGlobalLayoutListener(this); // Check if first icon have to be selected mListView.requestFocusFromTouch(); mListView.setSelection(0); } catch (Exception e) { StringWriter errors = new StringWriter(); e.printStackTrace(new PrintWriter(errors)); String errorReason = errors.toString(); Log.d( MainActivity.class.getName(), "Failed to focus first left bar list item: \n" + errorReason); } } }); // Check if left bar shall be hided mLeftBar = (LinearLayout) findViewById(R.id.leftbar); }