0

私はAndroidが初めてです。Facebookの写真のタグ付けのように顔にタグを付けることができる写真のタグ付けアプリケーションを実装しようとしています。顔を見つけて、顔の上に長方形を描くことができます。

EditTextしかし、ユーザーがそれらの長方形に触れたときに、顔認識された長方形に(名前を書くために)配置しようとしています。そして、それが完了したら、を無効にする必要がEditTextあり、show TextView(name) が必要です。以下のコードを見つけて、私を助けてください。

コード:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    // setContentView(R.layout.main);

    layout = new LinearLayout(this);
    LayoutParams params = new LayoutParams(LayoutParams.WRAP_CONTENT,
            LayoutParams.WRAP_CONTENT);

    myEditTet = new EditText(this);

    myView custom = new myView(this);
    layout.addView(myEditTet);
    myEditTet.setVisibility(View.GONE);
    // layout.addView(myTextView);
    // myTextView.setVisibility(View.GONE);
    layout.addView(custom, params); // Of course, this too
    setContentView(layout);

}

private class myView extends View {

    private int imageWidth, imageHeight;
    private int numberOfFace = 5;
    private FaceDetector myFaceDetect;
    private FaceDetector.Face[] myFace;
    float myEyesDistance;
    int numberOfFaceDetected;

    Bitmap myBitmap;

    public myView(Context context) {
        super(context);
        // TODO Auto-generated constructor stub

        BitmapFactory.Options BitmapFactoryOptionsbfo = new BitmapFactory.Options();
        BitmapFactoryOptionsbfo.inPreferredConfig = Bitmap.Config.RGB_565;
        myBitmap = BitmapFactory.decodeResource(getResources(),
                R.drawable.face3, BitmapFactoryOptionsbfo);
        imageWidth = myBitmap.getWidth();
        imageHeight = myBitmap.getHeight();
        myFace = new FaceDetector.Face[numberOfFace];
        myFaceDetect = new FaceDetector(imageWidth, imageHeight,
                numberOfFace);
        numberOfFaceDetected = myFaceDetect.findFaces(myBitmap, myFace);

    }

    @Override
    protected void onDraw(Canvas canvas) {
        // TODO Auto-generated method stub

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

        Paint myPaint = new Paint();
        myPaint.setColor(Color.GREEN);
        myPaint.setStyle(Paint.Style.STROKE);
        myPaint.setStrokeWidth(3);

        for (int i = 0; i < numberOfFaceDetected; i++) {
            android.media.FaceDetector.Face face = myFace[i];
            PointF myMidPoint = new PointF();
            face.getMidPoint(myMidPoint);
            myEyesDistance = face.eyesDistance();
            dx = (int) (myMidPoint.x - myEyesDistance);
            dy = (int) (myMidPoint.y - myEyesDistance);
            dz = (int) (myMidPoint.x + myEyesDistance);
            dt = (int) (myMidPoint.y + myEyesDistance);
            canvas.drawRect((int) (myMidPoint.x - myEyesDistance),
                    (int) (myMidPoint.y - myEyesDistance),
                    (int) (myMidPoint.x + myEyesDistance),
                    (int) (myMidPoint.y + myEyesDistance), myPaint);
        }
    }

    @Override
    public boolean onTouchEvent(MotionEvent event) {

        myEditTet.setVisibility(View.VISIBLE);
        if (event.getX() > dx && event.getX() < dz && event.getY() > dy
                && event.getY() < dt) {
            Log.i("SARDAR", "RECT TOUCH 1111");

        }
        return super.onTouchEvent(event);
    }
}
}
4

1 に答える 1

1

私はこの方法でそれをやった...

params.setmargin(left,top,right,bottom);

layout.addView(myeditText,params);

引数は int 型です

于 2012-10-05T09:13:06.607 に答える