के बिना कोई गतिविधि कैसे बनाएं, मुझे कोड बेलो जैसे कुछ करने से गतिविधियां बनाना संभव है, जहां दृश्य xml फ़ाइल से सेट नहीं है, लेकिन इस तरह: setContentView (नया MyView (यह));'setContentView (R.layout.main)'
मुझे समझ में नहीं आता कि इस कोड का उपयोग कैसे करें, लेकिन अभी भी इसे अनुकूलित करने की क्षमता है, उदाहरण के लिए यदि मैं कोड को बटन जोड़ना चाहता हूं, तो मैं इसे कैसे करूँगा, क्योंकि मैं बस जोड़ नहीं सकता एक एक्सएमएल लेआउट में से एक मैं कर सकता हूँ?
इस पर बहुत अच्छे उत्तर दिए गए बहुत ही स्वीकृत अग्रिम धन्यवाद!
package com.faceapp;
import android.app.Activity;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.PointF;
import android.media.FaceDetector;
import android.media.FaceDetector.Face;
import android.os.Bundle;
import android.view.View;
public class FaceappActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//setContentView(R.layout.main);
setContentView(new myView(this));
}
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.face5,
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++)
{
Face face = myFace[i];
PointF myMidPoint = new PointF();
face.getMidPoint(myMidPoint);
myEyesDistance = face.eyesDistance();
canvas.drawRect(
(int)(myMidPoint.x - myEyesDistance),
(int)(myMidPoint.y - myEyesDistance),
(int)(myMidPoint.x + myEyesDistance),
(int)(myMidPoint.y + myEyesDistance),
myPaint);
}
}
}
}
^^^^^^^^^^^^^^^ उत्तर दिया
कैसे बटन और imageView स्थिति के लिए? (आदर्श रूप में रिश्तेदार लेआउट का उपयोग कर) चित्र bellow आपको पता चलता है मैं क्या मतलब है: (ध्यान न दें कि छवि का आकार बदल दिया है)
नए कोड:
package com.test;
import android.app.Activity;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.PointF;
import android.media.FaceDetector;
import android.media.FaceDetector.Face;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.LinearLayout;
public class TesttActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
LinearLayout layout = new LinearLayout(this);
Button button = new Button(this);
button.setText("Button!");
layout.addView(button);
myView custom = new myView(this);
layout.addView(custom);
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.face5,
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++)
{
Face face = myFace[i];
PointF myMidPoint = new PointF();
face.getMidPoint(myMidPoint);
myEyesDistance = face.eyesDistance();
canvas.drawRect(
(int)(myMidPoint.x - myEyesDistance),
(int)(myMidPoint.y - myEyesDistance),
(int)(myMidPoint.x + myEyesDistance),
(int)(myMidPoint.y + myEyesDistance),
myPaint);
}
}
}
}
धन्यवाद सैम, मुझे यह काम मिल गया। मेरा एकमात्र मुद्दा अब आइटम्स को स्थिति में रख रहा है, जैसे कि बटन और छवि व्यू myView/onDraw द्वारा बनाई गई है। मैं आपको यह दिखाने के लिए प्रश्न का अद्यतन करता हूं कि मेरा क्या मतलब है। :) – user1472757
मुझे लगता है कि आप इसे रिलेटिव लेआउट लेआउट = नया रिलेवेटिवआउट (यह) द्वारा कर सकते हैं; लेकिन मैं बटन और छविदृश्य को कैसे स्थापित कर सकता हूं ?, धन्यवाद – user1472757
@ user1472757 मैंने अपने उत्तर में कोड अपडेट किया। प्रत्येक विशेषता को या तो एक्सएमएल या जावा में सेट किया जा सकता है, डेवलपर गाइड में एक्सएमएल विशेषताओं में एक "संबंधित विधि" होती है जो एक समानार्थी जावा फ़ंक्शन है (यानी लीनियरलाउट 'एंड्रॉइड: ओरिएंटेशन' के लिए 'setOrientation()') है। – Sam