mirror of
https://codeberg.org/Freeyourgadget/Gadgetbridge
synced 2024-11-13 13:39:26 +01:00
86 lines
2.4 KiB
Java
86 lines
2.4 KiB
Java
|
package com.mobeta.android.dslv;
|
||
|
|
||
|
import android.graphics.Bitmap;
|
||
|
import android.graphics.Color;
|
||
|
import android.graphics.Point;
|
||
|
import android.view.View;
|
||
|
import android.view.ViewGroup;
|
||
|
import android.widget.ImageView;
|
||
|
import android.widget.ListView;
|
||
|
|
||
|
/**
|
||
|
* Simple implementation of the FloatViewManager class. Uses list
|
||
|
* items as they appear in the ListView to create the floating View.
|
||
|
*/
|
||
|
public class SimpleFloatViewManager implements DragSortListView.FloatViewManager {
|
||
|
|
||
|
private Bitmap mFloatBitmap;
|
||
|
|
||
|
private ImageView mImageView;
|
||
|
|
||
|
private int mFloatBGColor = Color.BLACK;
|
||
|
|
||
|
private ListView mListView;
|
||
|
|
||
|
public SimpleFloatViewManager(ListView lv) {
|
||
|
mListView = lv;
|
||
|
}
|
||
|
|
||
|
public void setBackgroundColor(int color) {
|
||
|
mFloatBGColor = color;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* This simple implementation creates a Bitmap copy of the
|
||
|
* list item currently shown at ListView <code>position</code>.
|
||
|
*/
|
||
|
@Override
|
||
|
public View onCreateFloatView(int position) {
|
||
|
// Guaranteed that this will not be null? I think so. Nope, got
|
||
|
// a NullPointerException once...
|
||
|
View v = mListView.getChildAt(position + mListView.getHeaderViewsCount()
|
||
|
- mListView.getFirstVisiblePosition());
|
||
|
|
||
|
if (v == null) {
|
||
|
return null;
|
||
|
}
|
||
|
|
||
|
v.setPressed(false);
|
||
|
|
||
|
// Create a copy of the drawing cache so that it does not get
|
||
|
// recycled by the framework when the list tries to clean up memory
|
||
|
v.setDrawingCacheEnabled(true);
|
||
|
mFloatBitmap = Bitmap.createBitmap(v.getDrawingCache());
|
||
|
v.setDrawingCacheEnabled(false);
|
||
|
|
||
|
if (mImageView == null) {
|
||
|
mImageView = new ImageView(mListView.getContext());
|
||
|
}
|
||
|
mImageView.setBackgroundColor(mFloatBGColor);
|
||
|
mImageView.setPadding(0, 0, 0, 0);
|
||
|
mImageView.setImageBitmap(mFloatBitmap);
|
||
|
mImageView.setLayoutParams(new ViewGroup.LayoutParams(v.getWidth(), v.getHeight()));
|
||
|
|
||
|
return mImageView;
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
public void onDragFloatView(View floatView, Point position, Point touch) {
|
||
|
// Do nothing so we have a concrete class
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Removes the Bitmap from the ImageView created in
|
||
|
* onCreateFloatView() and tells the system to recycle it.
|
||
|
*/
|
||
|
@Override
|
||
|
public void onDestroyFloatView(View floatView) {
|
||
|
((ImageView) floatView).setImageDrawable(null);
|
||
|
|
||
|
mFloatBitmap.recycle();
|
||
|
mFloatBitmap = null;
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|