TTTjun 2015-11-05 09:24 采纳率: 100%
浏览 4199

Android 自定义View点击事件

给自定义小图标(箭头所指)添加OnclickListener();

结果

只要点击屏幕就会响应了

刚接触Android不久,不知道哪里的问题,求大神指点。

图片说明

public class Map extends Fragment implements OnClickListener {

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        View root = inflater.inflate(R.layout.map, container, false);
        FrameLayout frameLayout = (FrameLayout) root
                .findViewById(R.id.maplayout);
        /**
         * 新建一个图标
         * 
         * @author prohan
         * @param Context
         *            context int x ,int y 添加的点的左上角位置 int id 设置节点ID
         */
        final Myview myview = new Myview(this.getActivity(), 830, 880);
        myview.setOnClickListener(this);
        myview.setId(10);
        frameLayout.addView(myview);
        return root;
    }

    public void onAttach(Activity activity) {
        super.onAttach(activity);
    }

    class Myview extends View {
        public int bitmapx;
        public int bitmapy;

        public Myview(Context context, int x, int y) {
            super(context);
            this.bitmapx = x;
            this.bitmapy = y;

        }

        @Override
        protected void onDraw(Canvas canvas) {

            Paint point = new Paint();
            point.setAlpha(150);

            Bitmap bitmap = BitmapFactory.decodeResource(this.getResources(),
                    R.drawable.point);
            canvas.drawBitmap(bitmap, null, new Rect(bitmapx, bitmapy,
                    bitmapx + 60, bitmapy + 100), point);
            // canvas.drawRect(0, 0, getWidth(), getHeight(), mPaint);
            // canvas.drawBitmap(bitmap, bitmapx, bitmapy, point);

        }

    }

    // Onclick中的方法
    private void alertmessage() {
        AlertDialog alert = new AlertDialog.Builder(this.getActivity())
                .create();
        alert.setIcon(R.drawable.ic_launcher);// 设置对话框的图标
        alert.setTitle("当前站点信息:");
        alert.setMessage("XXXXXXXXXXXXXXXX");
        alert.show();

    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
        case 10:
            Toast.makeText(getActivity(), "#" + v.getId() + "#" + "8号楼监测站",
                    Toast.LENGTH_SHORT).show();
            alertmessage();
            break;

        default:
            break;
        }

    }
}

如果能告诉我如何能让myview跳动起来就最好啦

  • 写回答

1条回答 默认 最新

  • bdmh 移动开发领域优质创作者 2015-11-05 09:24
    关注

    是你的myview区域太大了吧
    830, 880,这可不小

    评论

报告相同问题?

悬赏问题

  • ¥50 深度学习运行代码直接中断
  • ¥15 关于#单片机#的问题,请各位专家解答!
  • ¥15 关于#单片机#的问题,请各位专家解答!
  • ¥20 需要完整的共散射点成像代码
  • ¥15 编写vba代码实现数据录入工作
  • ¥15 做过TCL海信电视小米电视相关影视会员软件私我
  • ¥15 Mapreduce是正常的,在运行其他jar包时并没有任何问题,只是在做LogCount.jar 时出的问题。如图所示
  • ¥15 ImportError: DLL load failed while importing _iterative: 找不到指定的模块。
  • ¥15 如何通过交互分析得出某高危患者对放疗获益更多
  • ¥15 相关性分析中,p<0.05, r=0.29,怎么评价相关性呢