GlassesView.java:
Using java Syntax Highlighting
- public class GlassesView extends View {
- private Paint paint;
- private BitmapFactory.Options options;
- private Bitmap bitmapOrg;
- private int glassesWidth;
- private int glassesHeight;
- public int glassesX;
- public int glassesY;
- public float glassesSizeX;
- public float glassesSizeY;
- private boolean drawGlasses;
- public GlassesView(Context context) {
- super(context);
- paint = new Paint();
- paint.setDither(false);
- paint.setAntiAlias(false);
- options = new BitmapFactory.Options();
- options.inDither = false;
- options.inScaled = false;
- Bitmap bitmapTemp = BitmapFactory.decodeResource(getResources(), R.drawable.micro_glasses, options);
- bitmapOrg = Bitmap.createScaledBitmap(bitmapTemp, 32, 5, false);
- glassesWidth = bitmapOrg.getWidth();
- glassesHeight = bitmapOrg.getHeight();
- drawGlasses = false;
- }
- @Override
- protected void onDraw(Canvas canvas) {
- if(drawGlasses) {
- Matrix matrix = new Matrix();
- matrix.postScale(glassesSizeX, glassesSizeY);
- Bitmap resizedBitmap = Bitmap.createBitmap(bitmapOrg, 0, 0, glassesWidth, glassesHeight, matrix, false);
- int newWidth = resizedBitmap.getWidth();
- int newHeight = resizedBitmap.getHeight();
- Paint bluey = new Paint();
- bluey.setColor(Color.BLUE);
- canvas.drawRect(new Rect(glassesX, glassesY, glassesX+newWidth, glassesY+newHeight), bluey);
- canvas.drawBitmap(resizedBitmap, glassesX, glassesY, paint);
- }
- }
- public void updateGlasses(int x, int y, float xsize, float ysize) {
- drawGlasses = true;
- glassesX = x;
- glassesY = y;
- glassesSizeX = (float) xsize / (float) glassesWidth;
- glassesSizeY = glassesSizeX;
- }
- }
Parsed in 0.037 seconds, using GeSHi 1.0.8.4
MainScreen.java:
Using java Syntax Highlighting
- public class MainScreen extends Activity {
- LinearLayout mLinearLayout;
- GlassesView mGlasses;
- int startx;
- int starty;
- int endx;
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- mLinearLayout = new LinearLayout(this);
- mLinearLayout.setBackgroundColor(Color.argb(255, 255, 255, 255));
- mGlasses = new GlassesView(this);
- mGlasses.drawGlasses(80, 80, 32.0f, 32.0f);
- mLinearLayout.addView(mGlasses, new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
- setContentView(mLinearLayout);
- }
- @Override
- public boolean onTouchEvent(MotionEvent event) {
- int action = event.getAction();
- if(action == MotionEvent.ACTION_DOWN) {
- startx = (int) event.getX();
- starty = (int) event.getY()- 40;
- }
- if(action == MotionEvent.ACTION_UP) {
- endx = (int) event.getX();
- float scale = endx-startx;
- mGlasses.drawGlasses(startx, starty, scale, scale);
- mGlasses.invalidate();
- }
- return super.onTouchEvent(event);
- }
- }
Parsed in 0.034 seconds, using GeSHi 1.0.8.4
The result:
(The blue rectangle being the bounding box of the image's intended size)At which part am I going wrong?
Thanks in advance



