में बच्चों के साथ व्यू ग्रुप को कनवर्ट करना मैं कैनवास का उपयोग करके बिटकमैप में एक व्यू ग्रुप (सापेक्ष लेटआउट) को सफलतापूर्वक परिवर्तित कर रहा हूं। हालांकि, जब ड्रॉ होता है तो मैं केवल अपनी पृष्ठभूमि के साथ व्यूग्रुप को देखता हूं, न कि इसके बच्चे (दो टेक्स्ट व्यू) जिन्हें FILL_PARENT जैसे नियमों का उपयोग करके रिलेवेटिवआउट के भीतर रखा जाना चाहिए।एंड्रॉइड समस्याएं बिटकमैप
RelativeLayout निम्नलिखित स्थिर समारोह का उपयोग कर बनाई गई है:
public static Bitmap loadBitmapFromView(RelativeLayout v) {
Bitmap b = Bitmap.createBitmap(v.getLayoutParams().width, v.getLayoutParams().height, Bitmap.Config.RGB_565);
Canvas c = new Canvas(b);
v.draw(c);
return b;
}
जैसी उम्मीद थी इस मुझ में एक अच्छा बिटमैप देता है:
public static RelativeLayout createProgrammeView(Context context, int width, int height, String title, String time) {
RelativeLayout.LayoutParams params;
// Layout Root View (RelativeLayout)
RelativeLayout rlv = new RelativeLayout(context);
params = new RelativeLayout.LayoutParams(width, height);
rlv.setLayoutParams(params);
rlv.setPadding(3, 3, 3, 3);
rlv.setBackgroundResource(R.drawable.background);
// Layout Title
TextView tv = new TextView(context);
params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.FILL_PARENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
params.addRule(RelativeLayout.ALIGN_PARENT_TOP);
params.addRule(RelativeLayout.ALIGN_PARENT_LEFT);
params.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
tv.setId(R.id.title);
tv.setLayoutParams(params);
tv.setGravity(Gravity.CENTER_VERTICAL);
tv.setSingleLine(true);
tv.setEllipsize(TruncateAt.END);
tv.setTextColor(Color.parseColor("#fff"));
tv.setTextSize(11);
tv.setText(title);
rlv.addView(tv);
// Layout Start Time
tv = new TextView(context);
params = new RelativeLayout.LayoutParams(16, RelativeLayout.LayoutParams.WRAP_CONTENT);
params.addRule(RelativeLayout.BELOW, R.id.title);
params.addRule(RelativeLayout.ALIGN_PARENT_LEFT);
params.setMargins(0, 4, 0, 0);
tv.setId(R.id.time);
tv.setLayoutParams(params);
tv.setGravity(Gravity.CENTER_VERTICAL);
tv.setSingleLine(true);
tv.setEllipsize(null);
tv.setTextColor(Color.parseColor("#fff"));
tv.setTextSize(10);
tv.setText(time);
rlv.addView(tv);
}
return rlv;
}
मैं उसके बाद निम्न एक बिटमैप में RelativeLayout चालू करने के लिए उपयोग करें पृष्ठभूमि के साथ आवश्यक आयामों को आकर्षित करने योग्य, लेकिन बच्चे बिटमैप में नहीं हैं। मैं इन कार्यों को एक बड़ी छवि बनाने के लिए काफी कुछ कहता हूं जो तब मेरी गतिविधि में एक कस्टम दृश्य पर खींचा जाता है।
public static void renderViews(final Context context) {
largeBitmap = Bitmap.createBitmap(largeWidth, largeHeight, Bitmap.Config.RGB_565);
Canvas largeCanvas = new Canvas(largeBitmap);
for (int i = 0; i < items.size(); i++) {
int leftMargin = ...SOME CALCULATIONS...;
RelativeLayout newView = createProgrammeView(context, width, rowHeight, "Title", "21:00");
Bitmap newViewBitmap = loadBitmapFromView(newView);
largeCanvas.drawBitmap(newViewBitmap, leftMargin, 0, new Paint());
}
myCustomView.invalidate();
}
मेरे कस्टम दृश्य को ओवरराइड करता है OnDraw() फ़ंक्शन:
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
canvas.drawBitmap(largeBitmap, 0, 0, null);
}
मैं क्या देख सकते हैं मेरा मानना है कि इस वजह से एंड्रॉयड नहीं करता है से
इस पाश जो स्थिर फ़ंक्शन को कॉल है बच्चे के दृश्यों पर एक उपाय() को कॉल न करें। मैंने इसे मैन्युअल रूप से कॉल करने का प्रयास किया है, लेकिन इससे समस्या हल नहीं होती है।
तो, मुझे लगता है कि मैं क्या जानना चाहता हूं, मैं बच्चों के साथ रिश्तेदार लयआउट को बिटमैप में कैसे परिवर्तित कर सकता हूं और बच्चों को मापने के लिए एंड्रॉइड प्राप्त कर सकता हूं ताकि वे अपने सापेक्ष लेआउट नियमों का सम्मान कर सकें।
किसी को भी बहुत धन्यवाद जो मुझे यह काम करने में मदद कर सकता है।
रोब
उत्कृष्ट। बहुत बहुत धन्यवाद रोमैन! मुझे पता था कि यह माप() और लेआउट() के साथ कुछ करने के लिए था, लेकिन मैं बस यह सब काम करने के लिए काम नहीं कर सका। एक बार फिर धन्यवाद। –
मेरे लिए भी काम किया। धन्यवाद! – Doigen
मेरे लिए भी काम किया। धन्यवाद .. –