首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android Scratch卡片应用

Android Scratch卡片应用
EN

Stack Overflow用户
提问于 2011-05-01 21:39:29
回答 1查看 5.4K关注 0票数 1

我正在为大学做一个小项目,不知道是否有人能告诉我,我将如何去做一个刮刮卡应用程序。这个应用程序应该有一个图像覆盖另一个。上面的一个应该允许用户根据他们在图像上摩擦的位置来删除图像,因此删除的图像的一部分会暴露出下面的图像。就像刮刮卡一样。任何帮助都是最好的!

这是我目前使用的代码。

代码语言:javascript
复制
            public class workinggraphics extends Activity 
 {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);
    //setContentView(R.layout.main);
    setContentView(new Panel(this));

    LinearLayout l1 = (LinearLayout) findViewById(R.id.LAYOUTTEST1);
    Panel p1 = new Panel(null);
}

    class Panel extends View{

        private Bitmap  mBitmap;
        private Canvas  mCanvas;
        private Path    mPath;
        private Paint   mPaint;
    //  private Paint nPaint;
        Bitmap bitmap;
        Canvas pcanvas ;
        int x = 0;
        int y =0;
        int r =0;
        public Panel(Context context) {
            super(context);

            Log.v("Panel", "STROKE");

            setFocusable(true);
            setBackgroundColor(Color.TRANSPARENT);
        /*  
            WallpaperManager wallpaperManager = WallpaperManager.getInstance(context);
            //WallpaperDrawable wallpaperDrawable=wallpaperManager.getDrawable();
            try {
                wallpaperManager.setBitmap(bmp);
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }*/
            //setBackgroundDrawable(bmp);
            // setting paint 
        /*  nPaint = new Paint();
            nPaint.setStyle(Paint.Style.FILL);*/

            mPaint = new Paint();
            mPaint.setAlpha(0);
            mPaint.setStyle(Paint.Style.FILL_AND_STROKE);
            mPaint.setStrokeCap(Paint.Cap.BUTT);
            mPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_IN));//.Mode.DST_IN));
            mPaint.setAntiAlias(false);

            // getting image from resources
            Resources r = this.getContext().getResources();

            Bitmap bm = BitmapFactory.decodeResource(getResources(),  R.drawable.mainscreen_background);
            Bitmap bm1 = BitmapFactory.decodeResource(getResources(),R.drawable.foreground_image);
            // converting image bitmap into mutable bitmap
            bitmap =  bm.createBitmap(bm.getWidth(), bm.getHeight(), Config.ARGB_8888);
            //bitmap = bm1.createBitmap(bm1.getWidth(),bm1.getHeight(),Config.ARGB_8888);
            pcanvas = new Canvas();
            pcanvas.setBitmap(bitmap);                   // drawXY will result on that Bitmap
            pcanvas.drawBitmap(bm, 0, 0, null);
            pcanvas.drawBitmap(bm1,0,0,null);


        }

        @Override
        protected void onDraw(Canvas canvas) {


            Rect cBK = new Rect();
            //canvas.set
            cBK.set(0,0,canvas.getWidth(),canvas.getHeight());

            //pcanvas.drawRect(cBK, nPaint);
            // draw a circle that is  erasing bitmap            
            pcanvas.drawCircle(x, y, r, mPaint);
            //pcanvas.drawLine(x, y, 0, 0, mPaint);

            canvas.drawBitmap(bitmap, 0, 0,null);

            super.onDraw(canvas);

        }



        @Override
        public boolean onTouchEvent(MotionEvent event) {

            // set paramete to draw circle on touch event
            x = (int) event.getX();
            y = (int) event.getY();

            r =20;
            // Atlast invalidate canvas
            invalidate();
            return true;
        }
    }
}

现在,正如你在上面看到的,有很多关于我们尝试过的东西的评论。理想情况下,我希望能够创建一个Panel类的实例,将workinggraphics类contextview设置为XML LinearLayout (或者使用SurfaceView w/e,我不太清楚),然后在定义的LinearLayout上设置一个背景图像,当画布擦除我们设置的位图图像时显示出来。

无论如何,任何建议都会被采纳,非常感谢!

EN

回答 1

Stack Overflow用户

发布于 2013-01-20 00:39:44

我创建了一个名为WScrarchView的库,在这个库中,您可以在布局xml中实现只有几行的临时视图。希望这能帮助那些仍然在寻找解决方案https://github.com/winsontan520/Android-WScratchView的人

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5848722

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档