bitmap-在Bitmap或者OVERLAYING按钮上如何动态的创建一个按钮

问题描述

在Bitmap或者OVERLAYING按钮上如何动态的创建一个按钮
我想在视图的 BITMAP或者OVERLAYING按钮上面创建一个按钮。我创建了一个数字签名,签名后,我需要点击一个按钮来保存。我使用的如下代码

public class FingerPaint extends GraphicsActivity   implements OnClickListener {  private TextView pauseButton;protected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(new MyView(this));    Capture_SignatureActivity.writeLog(""In FingerPaint class"");    mPaint = new Paint();    mPaint.setAntiAlias(true);    mPaint.setDither(true);    mPaint.setColor(0xFF003F87);    mPaint.setStyle(Paint.Style.STROKE);    mPaint.setStrokeJoin(Paint.Join.ROUND);    mPaint.setStrokeCap(Paint.Cap.ROUND);    mPaint.setStrokeWidth(1); } private Paint mPaint;public void colorChanged(int color) {    Capture_SignatureActivity.writeLog(""In color changed"");    mPaint.setColor(color);}public class MyView extends View{    private static final float MINP = 0.25f;    private static final float MAXP = 0.75f;    private Bitmap  mBitmap;    private Canvas  mCanvas;    private Path    mPath;    private Paint   mBitmapPaint;    private Bitmap overlayDefault;    private Bitmap overlay;    private Canvas c2;    private Paint pTouch;    private float X =  -100;    private float Y =  -100;    public MyView(Context c) {        super(c);        Capture_SignatureActivity.writeLog(""In MyVIEW"");        mPath = new Path();        mBitmapPaint = new Paint(Paint.DITHER_FLAG);          mBitmap =      BitmapFactory.decodeResource(getResources()R.drawable.ic_launcher);        overlayDefault = BitmapFactory.decodeResource(getResources()R.drawable.ic_launcher);        overlay = BitmapFactory.decodeResource(getResources()R.drawable.ic_launcher).copy(Config.ARGB_8888 true);          c2 = new Canvas(overlay);                 pTouch = new Paint(Paint.ANTI_ALIAS_FLAG);                 pTouch.setXfermode(new PorterDuffXfermode(Mode.SRC_OUT));         pTouch.setColor(Color.TRANSPARENT);        pTouch.setMaskFilter(new BlurMaskFilter(15 Blur.NORMAL));        pTouch.setMaskFilter(startActivity(FingerPaint.this Capture_SignatureActivity.class));    }    @Override    protected void onSizeChanged(int w int h int oldw int oldh) {        super.onSizeChanged(w h oldw oldh);        System.out.println(""w-->""+w+""-->""+""h--""+h+""-->""+""oldw-->""+oldh+""oldw-->""+oldw);        Capture_SignatureActivity.writeLog(""In  onSizeChanged"");        mBitmap = Bitmap.createBitmap(w h Bitmap.Config.ARGB_8888);                    mCanvas = new Canvas(mBitmap);           }    @Override    protected void onDraw(Canvas canvas) {        Capture_SignatureActivity.writeLog(""In onDraw"");        canvas.drawColor(0xFFFFFFFF);               canvas.drawBitmap(mBitmap 0 0 mBitmapPaint);        canvas.drawPath(mPath mPaint);        c2.drawBitmap(overlayDefault 0 0 null); //exclude this line to show all as you draw        c2.drawCircle(X  Y  80 pTouch);        //draw the overlay over the background          canvas.drawBitmap(overlay 0 0 null);    }    private float mX mY;    private static final float TOUCH_TOLERANCE = 4;    private void touch_start(float x float y) {        Capture_SignatureActivity.writeLog(""In  touch_start"");        mPath.reset();        mPath.moveTo(x y);        mX = x;        mY = y;        System.out.println(""---- "" +mX);    }    private void touch_move(float x float y) {        Capture_SignatureActivity.writeLog(""In  touch_Move"");        float dx = Math.abs(x - mX);        float dy = Math.abs(y - mY);        if (dx >= TOUCH_TOLERANCE || dy >= TOUCH_TOLERANCE) {            mPath.quadTo(mX mY (x + mX)/2 (y + mY)/2);            mX = x;            mY = y;        }    }    private void touch_up() {        Capture_SignatureActivity.writeLog(""In touch_up"");        mPath.lineTo(mX mY);        // commit the path to our offscreen        mCanvas.drawPath(mPath mPaint);        // kill this so we don't double draw        mPath.reset();    }    @Override    public boolean onTouchEvent(MotionEvent event) {        Capture_SignatureActivity.writeLog(""In  touch_event"");        float x = event.getX();        float y = event.getY();        switch (event.getAction()) {        case MotionEvent.ACTION_DOWN:            touch_start(x y);            invalidate();            break;        case MotionEvent.ACTION_MOVE:            touch_move(x y);            invalidate();            break;        case MotionEvent.ACTION_UP:            touch_up();            invalidate();            break;        }        return true;    }    public void onClick(View v) {        //In myView        startActivity(new Intent(FingerPaint.this Capture_SignatureActivity.class));    }}public void onClick(View v) {    //onCreate}@Overridepublic boolean onCreateOptionsMenu(android.view.Menu menu) {    super.onCreateOptionsMenu(menu);    menu.add(0 1 0 Clear Screen"");    menu.add(0 2 0 Exit Screen"");    return true;} @Overridepublic boolean onMenuItemSelected(int featureId MenuItem item){    switch(item.getItemId())     {    case 1:         startActivity(new Intent(this FingerPaint.class));        break;     case 2:         startActivity(new Intent(this Capture_SignatureActivity.class));        break;     }    return super.onMenuItemSelected(featureId item);}}

创建了图像,但是不能开启activity。怎么解决这个问题呢?

解决方案

在BITMAP或者CANVAS上动态的创建按钮的方法:

public class MainAct extends GrapActivity implements OnClickListener {private Button saveButton;private Button clearButton;// onCreate Activityprotected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);              // content view     signature = new MyView(this);     // Dynamically created button on bitmap & canvas    RelativeLayout myLayout = new RelativeLayout(this);            myLayout.setLayoutParams(new RelativeLayout.LayoutParams(LayoutParams.FILL_PARENT LayoutParams.FILL_PARENT));     // For Save Button    saveButton = new Button(this);     saveButton.setText(""Save"");     saveButton.setOnClickListener(this);     // For Clear Button    clearButton = new Button(this);     clearButton.setText(""Clear"");     clearButton.setOnClickListener(this);     myLayout.addView(signature);     myLayout.addView(saveButton);     myLayout.addView(clearButton);     RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(100 LayoutParams.WRAP_CONTENT);     //Alignments    params.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);     params.addRule(RelativeLayout.ALIGN_PARENT_LEFT);     saveButton.setLayoutParams(params);     //Alignments    RelativeLayout.LayoutParams params2 = new RelativeLayout.LayoutParams(100 LayoutParams.WRAP_CONTENT);     params2.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);     params2.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);     clearButton.setLayoutParams(params2);     saveButton.bringToFront();     clearButton.bringToFront();     this.setContentView(myLayout);     new Thread(new RefreshRunner()).start();     // onclick listner for CLEAR button    clearButton.setOnClickListener(new OnClickListener() {                  public void onClick(View v) {            //Activity for Clearing the Screen            startActivity(new Intent(ThisAct.this ThisAct.class));            finish();        }    }); // onclick listner for SAVE button        saveButton.setOnClickListener(new OnClickListener() {              public void onClick(View v) {                 //capture the image                  try {                                        saveAsJpg(mBitmap);                         startActivity(new Intent(ThisAct.this MainActivity.class));                    finish();                } catch (IOException e) {                                       e.printStackTrace();                }             }          });     } }

解决方案二:
如果你在RelativeLayout同时添加ImageView和Button。它们会重叠在一起。你可以根据需要设置下定位。

<RelativeLayout android:layout_width=""wrap_content""android:layout_height=""match_parent"" ><ImageView android:....android:..../><Button android:....android:..../></RelativeLayout>
时间: 2024-12-03 10:18:27

bitmap-在Bitmap或者OVERLAYING按钮上如何动态的创建一个按钮的相关文章

android-在屏幕上创建一个按钮

问题描述 在屏幕上创建一个按钮 我在网上查找了,有很多处理 scaling 的答案,我不知道用哪个,我使用的下面的 xml: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent&qu

点击界面上一个按钮,却执行了另一个按钮的事件!

问题描述 如题修改了.xml文件中按钮的位子后(绝对位子布局),编译下载到硬件后,发现点击界面上一个按钮,却执行了另一个按钮的事件!不知哪里出现了问题,请求指教! 解决方案 解决方案二:代码贴出了.解决方案三:<?xmlversion="1.0"encoding="utf-8"?><AbsoluteLayoutxmlns:android="http://schemas.android.com/apk/res/android"xm

github-将GitHub上代码仓库可以创建一个链接分享给别人么?

问题描述 将GitHub上代码仓库可以创建一个链接分享给别人么? 想GitHub上代码仓库可以创建一个链接分享出来,这样别人点击链接后就可以直接看到仓库里代码.求大神指教方法!!

c语言-如何用C语言创建一个按钮,按下这个按钮后,相当于从键盘录入相应的字符串

问题描述 如何用C语言创建一个按钮,按下这个按钮后,相当于从键盘录入相应的字符串 问题的来源是这样的,我用c编了一个计算器的程序,但是其输入只能在黑框里通过键盘输,我想把它做成一个能用鼠标点的按键式的,所以,我想的是设置几个键,通过鼠标点了之后,就相当于从键盘录入了相应的字符串,也就能通过我编的C程序计算出结果,并显示出来了.如果可行的话,求大神帮我编一个简单的示例程序(比如就一个键,按下后相当于从键盘录入某个字符后字符串),如果不可行的话,能不能给我一个可行的建议啊 解决方案 控制台程序吗?要

想在面板上显示动态变化的一个字符串,怎样做?(在线等)

问题描述 想在面板上显示动态变化的一个字符串,怎样做? 解决方案 解决方案二:不知道你说的面板是不是Swing的?下面是代码,packageswing;importjava.awt.BorderLayout;importjava.awt.Container;importjavax.swing.JFrame;importjavax.swing.JLabel;importjavax.swing.JPanel;publicclassMain{publicstaticvoidmain(String[]a

暂停界面 按钮监听-创建一个按钮并实现暂停界面

问题描述 创建一个按钮并实现暂停界面 我用的是3.0版本,这里有两个错误,一是说函数调用少了,二是说不存在从lambda 到cocos2d::ref* 的转换函数. 还有,3.0版本是不是没有Widget::TouchEventType? 帮帮忙,我想学习. 解决方案 老老实实写个函数出来好些吧 别这样搞 代码 反而不好维护 用 std::bind 或者 CC_CALLBACK_2 解决方案二: 老老实实写个函数出来好些吧 别这样搞 代码 反而不好维护 用 std::bind 或者 CC_CAL

github上-github Windows客户端创建一个repository失败,求解

问题描述 github Windows客户端创建一个repository失败,求解 解决方案 在github上创建一个repository 解决方案二: 推荐一个特别好用的git工具给你用,smartGit容易上手而且管理方便. 解决方案三: 推荐一个特别好用的git工具给你用,smartGit容易上手而且管理方便. 解决方案四: 那是什么,能详细一点吗

设计体验:按钮上的内容

最近 UCDChina 以"注意界面上的文字"为主题写了一系列的文章,使我在界面文字上的使用受益匪浅.之后,我对按钮上的内容的表现也做了一些总结与分析,与大家分享并希望得到指正. 1. 不必区分按钮还是链接.(这里列举的不是对他人观点进行攻击,而只是得以借鉴.) 很多人主张区别链接与按钮.这里,思域有一篇"关于鼠标点击对象:哪些应该是按钮,哪些应该是链接的说明." 臭鱼的"网页按钮的功能与表现",将按钮分成真正的按钮和伪按钮两类. 而事实上,不管

用Frontpage创建悬停按钮效果

  我们经常在网上遇到这样一种情况:当鼠标移到一个按钮上时,按钮的颜色立即发生变化而且还会发光,或者突然变成了另外一幅图片,十分有趣,动感非常之强.这个效果就是--悬停按钮. 要创建"悬停按钮"可以通过Frontpage 2000来轻松实现. 在没有任何脚本的情况下利用创建悬停按钮来添加动画到您的网页是一种容易的方式.如同其他的按钮一样,悬停按钮也可以含有指向其他网页或文件的超链接.然而,当站点访问者单击或指向悬停按钮时,该按钮与普通按钮的区别便尽显无遗:它不仅能够发光,还可显示自定义