SORU
21 Kasım 2012, ÇARŞAMBA


/Beyaz, görünüm't değişiklikleri css veya HTML değişiklikleri update Web görünümü işler boş değil, Android animasyonlar takılmalar

Css sınıf bir değişiklik yaptığınızda, değişiklikler her zaman görünmez. Bu düğme aşağı bir sınıf adı gibi bir şey ekler dokunma olayı var ne zaman gerçekleşmiş gibi görünür. Düğmesine güncelleme yok, ne de sayfada başka bir şey yok. İşe yaradığında çok çabalamama rağmen. Ayrıca Bazen benim unsurları hiçbir İçerik ya da bir şey ile beyaz görünür olduğunu fark ettik. Bu çok sinir bozucu!

CEVAP
21 Kasım 2012, ÇARŞAMBA


Umarım benimle aynı sorunları olan insanlara yardım etmek için kendi soruma cevap veriyorum.

Tamam. Birkaç haftadır Android web görünümü ve ™ ile uğraşıyorum. Y Android uygulaması nefret etmek için geldim. Korkunç bir şey. Animasyon ve render açısından hiçbir şey beklediğiniz gibi.

Her şey daha iyi, hatta tüm namlı -y-dönüşümü yapmak için çeşitli yöntemler denedim: translate3d(0,0,0); Hatta bunu çok iyi işe yaramadı.

İş yaptığını bana sizinle paylaşmak istiyorum.

İlk olarak, en son API kullanın. API 15 kullanıyorum. Android bildirim, donanım hızlandırmasını etkinleştirmek için emin olun. Eğer API sürümü bunu desteklemiyor değilse, o zaman bir sonraki aşamaya taşımak.

Eğer versiyonu desteklemiyor, sizin apaçık değiştirerek etkinleştirebilirsiniz:

<application
    ...
    android:hardwareAccelerated="true"
    ...
    >

Ayrıca, bildirim kullandığınız için minimum desteklenen API olduğundan emin olun. API kullanıyorum beri 15 Bu benim tezahür ediyor:

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

Şimdi, bir web görünümü sunulacak ne için birincil CSS dosyasında, bu gibi bir şey eklemek

body div {
    -webkit-transform: translate3d(0,0,0);
}

Eğer herhangi bir diğer öğe türleri ile vücut div bit üzerine ekleyin; muhtemelen görüntüleri, ul, li, vb dışlayabilirsiniz. Her şey için bu CSS stili uygulamak için bir sebep sadece deneme ve yanılma ile, kaba uygulayarak her şey için en iyi çalışması için görünür bulundu. Büyük bir DOM ağacı ile, daha spesifik olmak gerekir. Belirtimi ne olacağından emin, ancak değilim.

Sizin web görünümü örneğini, ayarlamak için isteyeceksiniz bazı ayarlar vardır:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    super.loadUrl("file:///android_asset/www/index.html");
    this.appView.getSettings().setRenderPriority(RenderPriority.HIGH);
    this.appView.getSettings().setPluginState(android.webkit.WebSettings.PluginState.ON_DEMAND);
}

Sondan ikinci ama önemli bit: web görünümü için kaynak kodu ile okuyordum ve bu gücü yeniden hakkında küçük bir yorum buldum. Statik final boolean, true zaman daha, görünüm her zaman yeniden çizmek için zorlar. Java sözdizimi üzerinde büyük değilim, ama doğrudan bir sınıf statik bir final özniteliği değiştirebilirsiniz sanmıyorum. Ne yaptım, bu yüzden Dersim uzatıldı:

import org.apache.cordova.CordovaWebView;

import android.content.Context;
import android.graphics.Canvas;

public class MyWebView extends CordovaWebView {
    public static final String TAG = "MyWebView";

    public MyWebView(Context context) {
        super(context);
    }

    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        // Warning! This will cause the WebView to continuously be redrawn
        // and will drain the devices battery while the view is displayed!
        invalidate();
    }

}

Unutmayın, ™ kullanıyorum, CordovaWebView gelen uzatmak zorunda kaldım devam et. Eğer onDraw yöntemi görürseniz, geçersiz kılmak için bir çağrı var. Bu yöntem ne demek emin değilim, ama oldukça büyüleyici.

Eğer ™ kullanıyorsanız son bir adım var. ™ Anlatmak için kendi web görünümü kendi sınıfı yerine yeni web görünümü kullanmak için sınıf var. MainActivity sınıfında, bu ekleyin:

public void init(){
    CordovaWebView webView = new MyWebView(MainActivity.this);
    super.init(webView, new CordovaWebViewClient(this, webView), new CordovaChromeClient(this, webView));
}

İşte bu! Deneyin ve app çalıştırın ve eğer herşey çok daha iyi olup olmadığını görmek. Tüm bu değişiklikleri yapmadan önce, sayfa beyaz görünür, CSS değişiklikleri ekranda tekrar dokunarak sonrasına kadar uygulanacağını, animasyonlar süper dalgalı ya da hatta belli değildi. Animasyonlar hala dalgalı, ama çok daha önce çok daha az parazitli olduğunu belirtmeliyim.

Eğer herkes bu eklemek istediğin bir şey varsa, hemen altında yorum. Her zaman iyileştirmeler için açığım; ve sadece tavsiye var ne yapmak için daha iyi yollar olabilir farkındayım.

Eğer benim yukarıda çözümü için çalışmak mı yoksa Androidler web görünümü ile ne görüyorsanız özel durumunu tarif edebilir misiniz?

Son olarak, "topluluk wiki", herkes kadar, ayarlamalar yapmak için çekinmeyin. bu cevap sağlamıştır

Teşekkürler!

-- -- düzenleyin

En son ™ ile, init gerekir() yöntemi bu gibi:

public void init(){
    CordovaWebView webView = new MyWebView(MainActivity.this);
    super.init(webView, new IceCreamCordovaWebViewClient(this, webView), new CordovaChromeClient(this, webView));
}

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Deany Boii

    Deany Boii

    27 Kasım 2007
  • hockeywebcasts

    hockeywebcas

    31 EKİM 2012
  • Peter Sharp

    Peter Sharp

    11 ŞUBAT 2013