安卓:开发一个手机画图应用,怎样实现鼠标点到哪里,哪里就出现一个小图案,如下图

爱码氏 星辰 2015-04-23 03:09:13
...全文
289 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
爱码氏 星辰 2015-04-24
  • 打赏
  • 举报
回复
怎样把资源里的图片贴到获得的坐标处?菜鸟一枚,求大神解惑。。
只为搞笑 2015-04-24
  • 打赏
  • 举报
回复
说一说粗糙的实现方法吧,首先你的空白部分使用相对布局,然后监听相对布局的onTouch时间,ontouch时间中处理ACTION_UP,这里可获得点击的位置,根据点击位置计算处在该相对布局中marginLeft和marginTop的值,然后new一个你要做画的图案,为它加上你计算出来的margin参数,添加到这个相对布局中, 说一说细腻的实现方法,学个游戏框架,你想怎么玩都行。
assky124 2015-04-24
  • 打赏
  • 举报
回复
给你写个简单列子,触发事件的时候添加一个对象,然后,局部刷新下就行了


import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.drawable.Drawable;
import android.util.AttributeSet;
import android.view.View;

import java.util.ArrayList;

/**
 * Created by Coder.Yan on 2015/4/24.
 */
public class SvgViewer extends View {

    private abstract class SvgEllement{
        public float x;
        public float y;
        public float widht;
        public float height;

        public abstract void draw(Canvas canvas);

    }

    private class SvgImageEllemnt extends SvgEllement{

        public int srcId;

        @Override
        public void draw(Canvas canvas) {
            //TODO 验证是否需绘图
            Drawable drawable = getContext().getResources().getDrawable(srcId);
            if(drawable != null){
                drawable.setBounds(Math.round(x),Math.round(y),Math.round(x+widht),Math.round(y+height));
                drawable.draw(canvas);
            }
        }
    }

    private ArrayList<SvgEllement> ellements = new ArrayList<SvgEllement>();
    private Paint paint;

    public SvgViewer(Context context, AttributeSet attrs) {
        super(context, attrs);
        paint = new Paint();

        SvgImageEllemnt ell1 = new SvgImageEllemnt();
        ell1.x = 100;
        ell1.y = 100;
        ell1.widht = 300;
        ell1.height = 300;
        ell1.srcId = R.drawable.ic_launcher;
        ellements.add(ell1);

        SvgImageEllemnt ell2 = new SvgImageEllemnt();
        ell2.x = 200;
        ell2.y = 500;
        ell2.widht = 50;
        ell2.height = 50;
        ell2.srcId = R.drawable.ic_launcher;
        ellements.add(ell2);

        SvgImageEllemnt ell3 = new SvgImageEllemnt();
        ell3.x = 30;
        ell3.y = 400;
        ell3.widht = 100;
        ell3.height = 100;
        ell3.srcId = R.drawable.ic_launcher;
        ellements.add(ell3);

    }

    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        for(SvgEllement ellement:ellements){
            ellement.draw(canvas);
        }
    }
}
@cement 2015-04-24
  • 打赏
  • 举报
回复
监听onTouch事件: Canvas.drawBitmap(bitmap, left, top, paint);
只为搞笑 2015-04-24
  • 打赏
  • 举报
回复
引用 3 楼 kaixinmanong 的回复:
怎样把资源里的图片贴到获得的坐标处?菜鸟一枚,求大神解惑。。
你可以new 一个imageview,然后setImageRes,就OK了,至于设置参数这些,看博客吧,很多的
爱码氏 星辰 2015-04-23
  • 打赏
  • 举报
回复
等回答。。。

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧