NeoMAD 3.9 release notes¶
June 15, 2015
New features¶
Maps API¶
It is now possible to display map views in the application. The native map provider is used, which is :
- Google Maps for Android
- MapKit for iOS
- Nokia Maps for Windows Phone.
Splash screen¶
It is now possible to specify custom splash images to show at the start of the application. Splash images are declared using a specific image resource set and a new tag of the urs file. Please refer to the User Guide for more information.
Gallery¶
A view that shows items in a center-locked, horizontally scrolling list. It can be use as an alternative to
ViewPager
to create a simple carousel.
Other new features and enhancements¶
New classes and methods:
GestureState
andGesture.getState()
: gives information about a gesture’s current state (if the gesture has begun, is moving or is finished)SlideScreen.setLeftShadowEnabled(boolean)
: enables or disables the shadow over the middle screen when the left menu is openedSlideScreen.setLeftSlidingTouchEnabled(boolean)
: activates or deactivates the opening of the left panel by dragging the screen with the fingerView.setTransformOrigin(float, float)
: sets the x and y location of the point around which the view will be scaled or rotated when an animation occursGridView.scrollToTop()
: moves the scroll position of the GridView to its first itemFrameLayout.bringChildToFront(View)
: moves the specified view at the top of the FrameLayoutViewPager.setEnabled(boolean)
,ViewPager.isEnabled()
: enables or disables the pager in order to allow or forbid the navigation between pages with the fingerViewPager.setOffScreenPageLimit(int)
: sets the number of pages that should be buffered at each side of the current pageImageLoader.get()
: useful for preloading image for ImageUrlLabel
Source file encoding: it is now possible to specify which file encoding is set on source files thanks to the new
<srcencoding>
tag in the URS. By default, the encoding used is the JVM’s file.encoding property.Support of the Location API for iOS 8 and more The Location API did not work for iOS 8 and more due to a change in the native API between iOS 7 and 8. New methods in the Location API and a new tag in the URS are available to configure the application in order to use the Location API in iOS:
<location requestAlwaysDescription="your text" requestWhenInUseDescription="your text" />
in the URS will enable use of Location API in iOSLocationManager.requestAlwaysAuthorization()
andLocationManager.requestWhenInUseAuthorization()
. One of them must be called before the first use of the location service. They will prompt a message to the user for enabling the location service in the application. The message comes from the<location>
tag attributes in the URS.
Additional classes and methods have been added to follow the location authorization status:
AuthorizationStatusListener
: allows to listen to changes in the location service authorizationLocationManager.setAuthorizationStatusListener(AuthorizationStatusListener)
: attaches aAuthorizationStatusListener
to theLocationManager
The value of the
<binaryname />
tag of the urs is now used to name the generated projects for all platforms, in addition to changing the name of the .apk, .xap or .ipa like before. Note that this tag is not used to change the title of the application, just the name of the binary file.
Compatibility changes¶
PinchListener.onPinchGestureBegin(Pinch, View)
andPinchListener.onPinchGestureEnd(Pinch, View)
are now deprecated. They are still called but will be removed in a future release. UseGesture.getState()
fromPinchListener.onPinchGesture(Pinch, View)
to know if the pinch is beginning or ending.- iOS minimum supported SDK version is now iOS 7.0.
- The Java ME and BlackBerry targets have been removed.
Deprecation¶
- The
DeviceInfo.IOS_5_0
toDeviceInfo.IOS_6_1
constants have been deprecated and will be removed in the next version of NeoMAD. - The
Notification.setActionText(String)
andNotification.setActionText(int)
methods have been deprecated and will be removed in the next version of NeoMAD.
Fixes¶
- Fix
ContentManager
NullPointerException when the server sets Cache-Control: “no-cache” or “no-store” - Fix
ContentResponse.isIntermediate()
not returning false when the response is coming from the network - Fix
FileImageCache
locked sometimes when used by multiple threads concurrently - Fix
HttpRequest.isSuccess()
bug in order to return true only if http code corresponds to 3XX or 4XX server code. - Improve
ImageUrlLabel.setImageUrl(String, ImageLoader)
performance. - Android:
- Fix
SlideScreen
: left pane maximum width is now 320dp. - Fix
Animation.scaleXBy(float)
andAnimation.scaleYBy(float)
: applying a scale factor lower than 1 now scales down the view - Fix
Animation
: a wrong factor was applied on scale animations - Fix
AnimationListener
: an exception occurred when starting a new animation fromonAnimationEnd(Animation)
callback - Fix
Transition
: a black screen appeared in transitions - Android reference libraries: fix R.java file that was being removed from the final binary during optimization step.
- Fix
GridView.scrollToTop()
that was not always working
- Fix
- iOS:
Vector.equals(Object)
: behavior is now the same as in Android, Windows Phone and Windows store apps, Vectors are equal if their content is equal- Fix encoding problem in iOS generated project: accented characters in application name were not correctly generated in the final project
String.trim()
: method now works if there are special characters in the string (like “é”, “&”, “è” etc.)SlideScreen
: disable overdraw of left and right panelsSlideScreen
: fix the white screen showing a short time before the middle screen appears- Fix
Layout.removeAllViews()
: background was removed with the views of the layout - Fix
Animation.translationX(float)
,Animation.translationY(float)
: animation started at a bad position if other layout changes occurred during the animation - Fix
Animation.rotationX(float)
andAnimation.rotationY(float)
: the whole view now stays visible during the animation - Fix
Animation.rotationX(float)
andAnimation.rotationY(float)
: animated view was blurred after animation - Fix
Animation.scaleX(float)
andAnimation.scaleY(float)
: same scale factor can no longer be applied several times on the same view (useAnimation.scaleXBy(float)
orAnimation.scaleYBy(float)
) - Fix
Animation.scaleX(float)
andAnimation.scaleY(float)
: the first time an animation of this type occurred in a layout, the animated view was not correctly drawn - Fix
Animation.setStartDelay(long)
: the start delay was not taken into account if the duration of the animation was 0 ms. WebView
: The default background color is now transparent- Fix
Image
instances being mistakenly freed byImageLabel
, causing white images to appear sometimes - Fix
LocationManager.isLocationEnabledByUser()
: the method always returned true even if the user had disabled the location service for the application - Fix
HttpResponse.getDataString()
: the method no longer returns null if called more than once
- Windows Phone:
- Fix: applications that require services are no longer rejected by the Windows Phone Store automatic validation process