Опитвам се да внедря анимация с ng-animate
за бутон в хибридно приложение за Android, в което използвам WebView
.
Анимираният бутон изглежда така:
<div class="dish-like dish-like-animater">
<img ng-hide="page.liked" class="dish-like-unliked" src="http://dev.fotodish.com/img/[email protected]" ng-click="Like()">
<img ng-show="page.liked" class="dish-like-liked-up" src="http://dev.fotodish.com/img/[email protected]">
<img ng-show="page.liked" class="dish-like-liked-down" src="http://dev.fotodish.com/img/[email protected]" ng-click="Unlike()">
</div>
Моля, проверете тази цигулка за подробности: http://jsfiddle.net/QcH8m/
Тествах анимацията на настолен Chrome, Samsung Galaxy S4 и Moto G. И в момента анимацията работи добре във всички следните среди:
- настолен Chrome,
- Браузър за Android ("Интернет") на този Galaxy S4,
- Chrome на този Galaxy S4,
- Chrome на този Moto G,
- WebView на този Moto G
Въпреки това, когато се опитах да го стартирам в WebView на този Galaxy S4, поведението му беше доста странно. В самото начало, преди да щракна върху него, изглеждаше добре, независимо дали page.liked
е вярно или невярно. Въпреки това, когато щракнах върху него, всичко просто изчезна. И възникна грешка. Проследяването на стека беше така:
03-21 16:40:32.412 6019-6019/com.fotodish.android E/Web Console﹕ TypeError: undefined is not a function
at file:///android_asset/www/bower_components/angular/angular.js:11330:9
at afterReflow (file:///android_asset/www/bower_components/angular-animate/angular-animate.js:1092:11)
at Object.fn (file:///android_asset/www/bower_components/angular-animate/angular-animate.js:1585:13)
at file:///android_asset/www/bower_components/angular-animate/angular-animate.js:450:46
at Array.forEach (native)
at forEach (file:///android_asset/www/bower_components/angular/angular.js:322:11)
at run (file:///android_asset/www/bower_components/angular-animate/angular-animate.js:438:11)
at Object.before (file:///android_asset/www/bower_components/angular-animate/angular-animate.js:471:13)
at performAnimation (file:///android_asset/www/bower_components/angular-animate/angular-animate.js:897:16)
at Object.removeClass (file:///android_asset/www/bower_components/angular-animate/angular-animate.js:702:11):9509
03-21 16:40:32.432 6019-6019/com.fotodish.android E/Web Console﹕ TypeError: undefined is not a function
at file:///android_asset/www/bower_components/angular/angular.js:11330:9
at afterReflow (file:///android_asset/www/bower_components/angular-animate/angular-animate.js:1092:11)
at Object.fn (file:///android_asset/www/bower_components/angular-animate/angular-animate.js:1585:13)
at file:///android_asset/www/bower_components/angular-animate/angular-animate.js:450:46
at Array.forEach (native)
at forEach (file:///android_asset/www/bower_components/angular/angular.js:322:11)
at run (file:///android_asset/www/bower_components/angular-animate/angular-animate.js:438:11)
at Object.before (file:///android_asset/www/bower_components/angular-animate/angular-animate.js:471:13)
at performAnimation (file:///android_asset/www/bower_components/angular-animate/angular-animate.js:897:16)
at Object.removeClass (file:///android_asset/www/bower_components/angular-animate/angular-animate.js:702:11):9509
Използвам angular 1.2.14 и angular-animate 1.2.14. Друга анимация относно ng-view
работи добре в същото време...
Настройките на WebView са като:
mWebView = (WebView) findViewById(R.id.webview);
WebSettings webSettings = mWebView.getSettings();
webSettings.setJavaScriptEnabled(true);
webSettings.setAllowUniversalAccessFromFileURLs(true);
webSettings.setDatabasePath("/data/data/" + this.getPackageName() + "/databases/");
webSettings.setDomStorageEnabled(true);
mWebView.setWebChromeClient(new WebChromeClient());
Galaxy S4 работи с Android 4.3, оригиналния Samsung. Moto G също работи с Android 4.3.
Низът на UserAgent на този Galaxy S4 е:
Mozilla/5.0 (Linux; U; Android 4.3; en-us; SAMSUNG-SGH-I337 Build/JSS15J) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30
Някой има ли идея какво се е случило?