1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95
| import android.util.AttributeSet;
import android.view.GestureDetector;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
public class lecanvas extends View{
float f1;boolean j1;boolean j2;
float f2;boolean debut=false;
private GestureDetector mGestureDetector;
Paint p=new Paint();
class SideIndexGestureListener extends GestureDetector.SimpleOnGestureListener {
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
// we know already coordinates of first touch
// we know as well a scroll distance
sideIndexX = sideIndexX - distanceX;
sideIndexY = sideIndexY - distanceY;
// when the user scrolls within our side index
// we can show for every position in it a proper
// item in the country list
if (sideIndexX >= 0 && sideIndexY >= 0) {
// displayListItem();
}
return super.onScroll(e1, e2, distanceX, distanceY);
}
}
public lecanvas(Context context) {
super(context);
mGestureDetector = new GestureDetector(context, new SideIndexGestureListener());
// TODO Auto-generated constructor stub
}
public lecanvas(Context context, AttributeSet attrs) {
super(context, attrs);
mGestureDetector = new GestureDetector(context, new SideIndexGestureListener());
}
protected void onDraw (Canvas c) {
int width = getWidth();
int height = getHeight();
if (debut == false) {
f1 = 25;
f2 = width - 25;
}
p.setColor(Color.CYAN);
c.drawLine(f1, Math.round(height / 2) + 1, f1, height - 25, p);
c.drawLine(f2, Math.round(height / 2) + 1, f2, height - 25, p);
this.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
return false;
}
});
}
public boolean onTouchEvent( MotionEvent event) {
switch (event.getActionMasked()){
case MotionEvent.ACTION_DOWN:
j1=false;j2=false;if ((event.getX()<f1+10)&&
(event.getX()>f1-10)){j1=true;debut=true;
}
else{if ((event.getX()<f2+10)&&
(event.getX()>f2-10)){debut=true;j2=true;
}
}
break;
case MotionEvent.ACTION_MOVE:
if (j1==true){f1 = event.getX();}
else{if (j2==true){f2 = event.getX();}
}
break;
}
if (mGestureDetector.onTouchEvent(event)) {
return true;
} else {
return false;
}
}}; |
Partager