2012-02-04 15 views
8

मेरे पास 800x480 res के साथ एक डिवाइस है। जब मैं GLSurfaceView बनाता हूं, तो मुझे 533x320 (स्पष्ट रूप से 1.5 एचडीपीआई संशोधक के साथ लागू) के साथ onSurfaceChanged कॉल मिलता है और सतह को ऊपर उठाया जाता है। तो जब मैं 1 पिक्सेल मोटी रेखा खींचता हूं तो वास्तव में बुरा लगता है, और मेरे पास पिक्सेल-परिपूर्ण प्रतिपादन नहीं हो सकता है।ओपनजीएल सतह दृश्य विभिन्न डीपीआई के लिए स्केलिंग

जो मैं चाहता हूं वह मूल संकल्प सतह (800x480) है।

देखें इस तरीके (NDK ओपन के नमूनों में की तरह) में बनाई गई है, गतिविधि के onCreate में:

this.requestWindowFeature(Window.FEATURE_NO_TITLE); 
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); 
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON | 
      WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD | 
      WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED | 
      WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON); 

    view = new MyGLSurfaceView(this); 
    setContentView(view); 

मैं किसी भी लेआउट आदि

+0

आप कुछ कोड पोस्ट कर सकते हैं लेआउट इस GLSurface ध्यान में रखते हुए किया जाता है की तरह है,? मैं पतली हवा से जवाब खींच नहीं सकता। –

+0

निश्चित रूप से, मैं इसे प्रश्न में जोड़ दूंगा। – Mark

उत्तर

4

मैं समाधान पाया जा सकता है: जब मैं AndroidManifest.xml को

<uses-sdk android:targetSdkVersion="8" android:minSdkVersion="8"/> 

जोड़ने के लिए, मैं उचित resolution.To ईमानदारी से कहूं तो मिलता है, एंड्रॉयड बहुत है iOS के साथ कुछ वर्षों के बाद मेरे लिए अजीब मंच ...

समाधान मिला: MonoDroid apps don't use correct density drawables

+0

ओह ठीक है, यह आपके लिए काम पर एंड्रॉइड डिवाइस विखंडन है ... वैसे भी, मैनिफेस्ट फ़ाइल पर अच्छी कॉल। – Erik

0

समस्या के मूल झूठ लगता है का उपयोग नहीं करते onSurfaceChanged कमांड (अनुमानित रूप से परिवर्तित) चौड़ाई और ऊंचाई को गुजरने के साथ।

दृश्य बनाने के कोड में कुछ भी गलत नहीं हो सकता है, लेकिन हम यह सुनिश्चित करना चाहते हैं कि यह वास्तविक डिवाइस रिज़ॉल्यूशन पर बनाया गया हो। शायद setLayout (int width, int height) को वांछित चौड़ाई और ऊंचाई के साथ स्पष्ट रूप से कॉल करने से आपको बेहतर लाभ मिल सकता है ...

जाहिर है, आपको ऐसा करने से पहले वास्तविक भौतिक स्क्रीन आकार निर्धारित करना होगा। http://developer.android.com/reference/android/util/DisplayMetrics.html

कि, काम नहीं करता है शायद एक अलग डिवाइस पर अपने कोड की कोशिश कर रहा एक सही परिणाम उपज सकता है: और अपने सबसे अच्छे शर्त वास्तविक भौतिक पिक्सल प्राप्त करने के लिए widthPixels और DisplayMetrics से heightPixels के साथ है। जो मामले में यह एक डिवाइस पर निर्भर मुद्दा ...

+0

मैंने कोशिश की है, लेकिन आश्चर्यजनक रूप से DisplayMetrics भी गलत प्रतीत होता है। एचटीसी डिजायर जेड के लिए परिणाम: चौड़ाई पिक्सेल 533 ऊंचाई पिक्सेल 320 xdpi 254.000000 ydpi 254.000000 घनत्व 1.500000 densDPI 240 (डिवाइस मूल संकल्प 800x480) – Mark

+0

मदद के लिए धन्यवाद, एरिक, डिस्प्लेमैट्रिक्स एक अच्छा संकेत था! – Mark