From: TizenAPI-Bot Date: Tue, 2 May 2023 07:49:04 +0000 (+0000) Subject: Merge remote-tracking branch 'origin/master' into tizen X-Git-Tag: submit/tizen/20230502.074904~1 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=d7d8d9bb0ddd10130774416e86c0defe1b68167d;hp=02e80ed6bf8b671af2cfbbde4ab634088f8e9b78;p=platform%2Fcore%2Fcsapi%2Ftizenfx.git Merge remote-tracking branch 'origin/master' into tizen --- diff --git a/packaging/csapi-tizenfx.spec b/packaging/csapi-tizenfx.spec index 264a087..74d7bb0 100644 --- a/packaging/csapi-tizenfx.spec +++ b/packaging/csapi-tizenfx.spec @@ -1,8 +1,8 @@ # Auto-generated from csapi-tizenfx.spec.in by makespec.sh %define TIZEN_NET_API_VERSION 11 -%define TIZEN_NET_RPM_VERSION 11.0.0.17809+nui22223 -%define TIZEN_NET_NUGET_VERSION 11.0.0.17809 +%define TIZEN_NET_RPM_VERSION 11.0.0.999+nui22224 +%define TIZEN_NET_NUGET_VERSION 11.0.0.99999 %define DOTNET_ASSEMBLY_PATH /usr/share/dotnet.tizen/framework %define DOTNET_ASSEMBLY_DUMMY_PATH %{DOTNET_ASSEMBLY_PATH}/ref diff --git a/packaging/version.txt b/packaging/version.txt index 4024814..d16acf4 100755 --- a/packaging/version.txt +++ b/packaging/version.txt @@ -6,4 +6,4 @@ RPM_VERSION=11.0.0.999 NUGET_VERSION=11.0.0.99999 # RPM Version Suffix -RPM_VERSION_SUFFIX=nui22223 +RPM_VERSION_SUFFIX=nui22224 diff --git a/src/Tizen.Data.Tdbc.Driver.Sqlite/Tizen.Data.Tdbc.Driver.Sqlite/Connection.cs b/src/Tizen.Data.Tdbc.Driver.Sqlite/Tizen.Data.Tdbc.Driver.Sqlite/Connection.cs index 7bcc8bd..0668970 100644 --- a/src/Tizen.Data.Tdbc.Driver.Sqlite/Tizen.Data.Tdbc.Driver.Sqlite/Connection.cs +++ b/src/Tizen.Data.Tdbc.Driver.Sqlite/Tizen.Data.Tdbc.Driver.Sqlite/Connection.cs @@ -90,10 +90,12 @@ namespace Tizen.Data.Tdbc.Driver.Sqlite } Sql sql = new Sql(string.Format("SELECT * from {0} WHERE rowid = {1}", table_name, rowid)); - IRecord record = CreateStatement().ExecuteQuery(sql).FirstOrDefault(); - - RecordChangedEventArgs ev = new RecordChangedEventArgs(operationType, db_name, table_name, record); - _recordChanged?.Invoke(this, ev); + using (IStatement stmt = CreateStatement()) + { + IRecord record = stmt.ExecuteQuery(sql).FirstOrDefault(); + RecordChangedEventArgs ev = new RecordChangedEventArgs(operationType, db_name, table_name, record); + _recordChanged?.Invoke(this, ev); + } } internal IntPtr GetHandle() diff --git a/src/Tizen.Data.Tdbc.Driver.Sqlite/Tizen.Data.Tdbc.Driver.Sqlite/Statement.cs b/src/Tizen.Data.Tdbc.Driver.Sqlite/Tizen.Data.Tdbc.Driver.Sqlite/Statement.cs index 9114777..45fc530 100644 --- a/src/Tizen.Data.Tdbc.Driver.Sqlite/Tizen.Data.Tdbc.Driver.Sqlite/Statement.cs +++ b/src/Tizen.Data.Tdbc.Driver.Sqlite/Tizen.Data.Tdbc.Driver.Sqlite/Statement.cs @@ -55,27 +55,31 @@ namespace Tizen.Data.Tdbc.Driver.Sqlite if (pos == 0) throw new InvalidOperationException("Invalid binding"); - if (typeof(int) == obj.GetType()) + // TODO: consider null binding + if (obj == null) + continue; + + Type type = obj.GetType(); + if (typeof(int) == type) { Interop.Sqlite.BindInt(_stmt, pos, (int)obj); } - else if (typeof(bool) == obj.GetType()) + else if (typeof(bool) == type) { bool val = (bool)obj; Interop.Sqlite.BindInt(_stmt, pos, val ? 1 : 0); } - else if (typeof(double) == obj.GetType()) + else if (typeof(double) == type) { Interop.Sqlite.BindDouble(_stmt, pos, (double)obj); } - else if (typeof(string) == obj.GetType()) + else if (typeof(string) == type) { Interop.Sqlite.BindText(_stmt, pos, (string)obj, -1, (IntPtr)(-1)); } - else if (typeof(byte[]) == obj.GetType()) + else if (typeof(byte[]) == type) { - if (obj != null) - Interop.Sqlite.BindData(_stmt, pos, (byte[])obj, ((byte[])obj).Length, IntPtr.Zero); + Interop.Sqlite.BindData(_stmt, pos, (byte[])obj, ((byte[])obj).Length, IntPtr.Zero); } } diff --git a/src/Tizen.NUI.Components/Controls/RecyclerView/Layouter/GridLayouter.cs b/src/Tizen.NUI.Components/Controls/RecyclerView/Layouter/GridLayouter.cs index 11881d8..b90d617 100755 --- a/src/Tizen.NUI.Components/Controls/RecyclerView/Layouter/GridLayouter.cs +++ b/src/Tizen.NUI.Components/Controls/RecyclerView/Layouter/GridLayouter.cs @@ -239,9 +239,9 @@ namespace Tizen.NUI.Components } while (!failed && - Source.IsHeader(firstIndex) || + (Source.IsHeader(firstIndex) || Source.IsGroupHeader(firstIndex) || - Source.IsGroupFooter(firstIndex)) + Source.IsGroupFooter(firstIndex))) { if (Source.IsFooter(firstIndex) || ((Source.Count - 1) <= firstIndex)) diff --git a/src/Tizen.NUI.Components/Controls/RecyclerView/Layouter/LinearLayouter.cs b/src/Tizen.NUI.Components/Controls/RecyclerView/Layouter/LinearLayouter.cs index 7a5f4fd..7504e09 100755 --- a/src/Tizen.NUI.Components/Controls/RecyclerView/Layouter/LinearLayouter.cs +++ b/src/Tizen.NUI.Components/Controls/RecyclerView/Layouter/LinearLayouter.cs @@ -227,9 +227,9 @@ namespace Tizen.NUI.Components } while (!failed && - Source.IsHeader(firstIndex) || + (Source.IsHeader(firstIndex) || Source.IsGroupHeader(firstIndex) || - Source.IsGroupFooter(firstIndex)) + Source.IsGroupFooter(firstIndex))) { if (Source.IsFooter(firstIndex) || ((Source.Count - 1) <= firstIndex)) diff --git a/src/Tizen.NUI/src/internal/Common/FrameBuffer.cs b/src/Tizen.NUI/src/internal/Common/FrameBuffer.cs index 433b006..dc8ee22 100755 --- a/src/Tizen.NUI/src/internal/Common/FrameBuffer.cs +++ b/src/Tizen.NUI/src/internal/Common/FrameBuffer.cs @@ -72,5 +72,16 @@ namespace Tizen.NUI if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); return ret; } + + /// + /// Generate URI from current buffer. + /// + /// The pixel format for this frame buffer + /// The width for this frame buffer + /// The height for this frame buffer + public ImageUrl GenerateUrl(PixelFormat pixelFormat, int width, int height) + { + return new ImageUrl(Interop.FrameBuffer.GenerateUrl(this.SwigCPtr.Handle, (int)pixelFormat, width, height), true); + } } } diff --git a/src/Tizen.NUI/src/internal/Interop/Interop.Animation.cs b/src/Tizen.NUI/src/internal/Interop/Interop.Animation.cs index 5e12495..7e94a96 100755 --- a/src/Tizen.NUI/src/internal/Interop/Interop.Animation.cs +++ b/src/Tizen.NUI/src/internal/Interop/Interop.Animation.cs @@ -116,6 +116,12 @@ namespace Tizen.NUI [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_Animation_Clear")] public static extern void Clear(global::System.Runtime.InteropServices.HandleRef jarg1); + [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_Animation_SetLoopingMode")] + public static extern void SetLoopingMode(global::System.Runtime.InteropServices.HandleRef jarg1, int jarg2); + + [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_Animation_GetLoopingMode")] + public static extern int GetLoopingMode(global::System.Runtime.InteropServices.HandleRef jarg1); + [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_Animation_SetProgressNotification")] public static extern void SetProgressNotification(global::System.Runtime.InteropServices.HandleRef jarg1, float jarg2); diff --git a/src/Tizen.NUI/src/internal/Interop/Interop.FrameBuffer.cs b/src/Tizen.NUI/src/internal/Interop/Interop.FrameBuffer.cs index adf3f74..607b19d 100755 --- a/src/Tizen.NUI/src/internal/Interop/Interop.FrameBuffer.cs +++ b/src/Tizen.NUI/src/internal/Interop/Interop.FrameBuffer.cs @@ -56,6 +56,9 @@ namespace Tizen.NUI [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_FrameBuffer_SWIGUpcast")] public static extern global::System.IntPtr Upcast(global::System.IntPtr jarg1); + + [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_FrameBuffer_GenerateUrl")] + public static extern global::System.IntPtr GenerateUrl(global::System.IntPtr frameBuffer, int pixelFormat, int width, int height); } } } diff --git a/src/Tizen.NUI/src/internal/Interop/Interop.ImageView.cs b/src/Tizen.NUI/src/internal/Interop/Interop.ImageView.cs index bbefd9e..692bc99 100755 --- a/src/Tizen.NUI/src/internal/Interop/Interop.ImageView.cs +++ b/src/Tizen.NUI/src/internal/Interop/Interop.ImageView.cs @@ -29,6 +29,12 @@ namespace Tizen.NUI [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_ImageView_Property_PIXEL_AREA_get")] public static extern int PixelAreaGet(); + [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_ImageView_Property_PLACEHOLDER_IMAGE_get")] + public static extern int PlaceHolderImageGet(); + + [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_ImageView_Property_TRANSITION_EFFECT_get")] + public static extern int TransitionEffectGet(); + [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_new_ImageView_Property")] public static extern global::System.IntPtr NewImageViewProperty(); diff --git a/src/Tizen.NUI/src/internal/Interop/Interop.Window.cs b/src/Tizen.NUI/src/internal/Interop/Interop.Window.cs index d7b9acf..31fda4f 100755 --- a/src/Tizen.NUI/src/internal/Interop/Interop.Window.cs +++ b/src/Tizen.NUI/src/internal/Interop/Interop.Window.cs @@ -314,6 +314,12 @@ namespace Tizen.NUI [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_Window_GetLastTouchEvent")] public static extern global::System.IntPtr GetLastTouchEvent(global::System.Runtime.InteropServices.HandleRef window); + [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_Window_InternalRetrievingLastKeyEvent")] + public static extern void InternalRetrievingLastKeyEvent(global::System.Runtime.InteropServices.HandleRef window, global::System.Runtime.InteropServices.HandleRef key); + + [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_Window_InternalRetrievingLastTouchEvent")] + public static extern void InternalRetrievingLastTouchEvent(global::System.Runtime.InteropServices.HandleRef window, global::System.Runtime.InteropServices.HandleRef touch); + [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_Window_SetNeedsRotationCompletedAcknowledgement")] public static extern void SetNeedsRotationCompletedAcknowledgement(global::System.Runtime.InteropServices.HandleRef window, bool needAcknowledgement); diff --git a/src/Tizen.NUI/src/public/Animation/Animation.cs b/src/Tizen.NUI/src/public/Animation/Animation.cs index 07f95a6..017177c 100755 --- a/src/Tizen.NUI/src/public/Animation/Animation.cs +++ b/src/Tizen.NUI/src/public/Animation/Animation.cs @@ -210,6 +210,28 @@ namespace Tizen.NUI } /// + /// Enumeration for what looping mode is in. + /// + /// This will be public opened in next tizen after ACR done. Before ACR, need to be hidden as inhouse API. + [EditorBrowsable(EditorBrowsableState.Never)] + [System.Diagnostics.CodeAnalysis.SuppressMessage("Naming", "CA1717:Only FlagsAttribute enums should have plural names")] + public enum LoopingModes + { + /// + /// When the animation arrives at the end in looping mode, the animation restarts from the beginning. (Default) + /// + /// This will be public opened in next tizen after ACR done. Before ACR, need to be hidden as inhouse API. + [EditorBrowsable(EditorBrowsableState.Never)] + Restart, + /// + /// When the animation arrives at the end in looping mode, the animation reverses direction and runs backwards again. + /// + /// This will be public opened in next tizen after ACR done. Before ACR, need to be hidden as inhouse API. + [EditorBrowsable(EditorBrowsableState.Never)] + AutoReverse + } + + /// /// Gets or sets the duration in milliseconds of the animation. /// This duration is applied to the animations are added after the Duration is set. /// @@ -458,6 +480,26 @@ namespace Tizen.NUI } /// + /// Enumeration for what looping mode is in. + /// + /// This will be public opened in next tizen after ACR done. Before ACR, need to be hidden as inhouse API. + [EditorBrowsable(EditorBrowsableState.Never)] + public LoopingModes LoopingMode + { + set + { + Interop.Animation.SetLoopingMode(SwigCPtr, (int)value); + if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); + } + get + { + Animation.LoopingModes ret = (Animation.LoopingModes)Interop.Animation.GetLoopingMode(SwigCPtr); + if (NDalicPINVOKE.SWIGPendingException.Pending) throw new InvalidOperationException("FATAL: get Exception", NDalicPINVOKE.SWIGPendingException.Retrieve()); + return ret; + } + } + + /// /// Gets or sets the properties of the animation. /// //ToDo : will raise deprecated-ACR, [Obsolete("Deprecated in API9, will be removed in API11, Use PropertyList instead")] diff --git a/src/Tizen.NUI/src/public/BaseComponents/ImageView.cs b/src/Tizen.NUI/src/public/BaseComponents/ImageView.cs index 7ef9663..6669f7a 100755 --- a/src/Tizen.NUI/src/public/BaseComponents/ImageView.cs +++ b/src/Tizen.NUI/src/public/BaseComponents/ImageView.cs @@ -1154,6 +1154,44 @@ namespace Tizen.NUI.BaseComponents } private bool adjustViewSize = false; + /// + /// ImageView PlaceHolderUrl, type string. + /// This is one of mandatory property. Even if not set or null set, it sets empty string ("") internally. + /// When it is set as null, it gives empty string ("") to be read. + /// + /// 11 + [EditorBrowsable(EditorBrowsableState.Never)] + public string PlaceHolderUrl + { + get + { + return (string)GetValue(PlaceHolderUrlProperty); + } + set + { + SetValue(PlaceHolderUrlProperty, value); + NotifyPropertyChanged(); + } + } + + /// + /// Gets or sets whether the image use TransitionEffect or not
+ ///
+ /// 11 + [EditorBrowsable(EditorBrowsableState.Never)] + public bool TransitionEffect + { + get + { + return (bool)GetValue(TransitionEffectProperty); + } + set + { + SetValue(TransitionEffectProperty, value); + NotifyPropertyChanged(); + } + } + internal Selector ResourceUrlSelector { get => GetSelector(resourceUrlSelector, ImageView.ResourceUrlProperty); @@ -1686,6 +1724,8 @@ namespace Tizen.NUI.BaseComponents internal static readonly int IMAGE = Interop.ImageView.ImageGet(); internal static readonly int PreMultipliedAlpha = Interop.ImageView.PreMultipliedAlphaGet(); internal static readonly int PixelArea = Interop.ImageView.PixelAreaGet(); + internal static readonly int PlaceHolderUrl = Interop.ImageView.PlaceHolderImageGet(); + internal static readonly int TransitionEffect = Interop.ImageView.TransitionEffectGet(); } private enum ImageType diff --git a/src/Tizen.NUI/src/public/BaseComponents/ImageViewBindableProperty.cs b/src/Tizen.NUI/src/public/BaseComponents/ImageViewBindableProperty.cs index 0f815ef..55ba7fd 100755 --- a/src/Tizen.NUI/src/public/BaseComponents/ImageViewBindableProperty.cs +++ b/src/Tizen.NUI/src/public/BaseComponents/ImageViewBindableProperty.cs @@ -525,5 +525,39 @@ namespace Tizen.NUI.BaseComponents var instance = (Tizen.NUI.BaseComponents.ImageView)bindable; return instance.adjustViewSize; }); + + /// + /// PlaceHolderUrlProperty + /// + [EditorBrowsable(EditorBrowsableState.Never)] + public static readonly BindableProperty PlaceHolderUrlProperty = BindableProperty.Create(nameof(PlaceHolderUrl), typeof(string), typeof(ImageView), string.Empty, propertyChanged: (bindable, oldValue, newValue) => + { + var imageView = (Tizen.NUI.BaseComponents.ImageView)bindable; + if (newValue != null) + { + Object.InternalSetPropertyString(imageView.SwigCPtr, ImageView.Property.PlaceHolderUrl, (string)newValue ); + } + }, + defaultValueCreator: (bindable) => + { + var imageView = (Tizen.NUI.BaseComponents.ImageView)bindable; + return Object.InternalGetPropertyString(imageView.SwigCPtr, ImageView.Property.PlaceHolderUrl); + }); + + /// Intenal used, will never be opened. + [EditorBrowsable(EditorBrowsableState.Never)] + public static readonly BindableProperty TransitionEffectProperty = BindableProperty.Create(nameof(TransitionEffect), typeof(bool), typeof(ImageView), false, propertyChanged: (bindable, oldValue, newValue) => + { + var imageView = (ImageView)bindable; + if (newValue != null) + { + Object.InternalSetPropertyBool(imageView.SwigCPtr, ImageView.Property.TransitionEffect, (bool)newValue); + } + }, + defaultValueCreator: (BindableProperty.CreateDefaultValueDelegate)((bindable) => + { + var imageView = (ImageView)bindable; + return Object.InternalGetPropertyBool(imageView.SwigCPtr, ImageView.Property.TransitionEffect); + })); } } diff --git a/src/Tizen.NUI/src/public/Window/Window.cs b/src/Tizen.NUI/src/public/Window/Window.cs index f844968..01e2ffd 100755 --- a/src/Tizen.NUI/src/public/Window/Window.cs +++ b/src/Tizen.NUI/src/public/Window/Window.cs @@ -41,6 +41,8 @@ namespace Tizen.NUI private string windowTitle; private List childLayers = new List(); private LayoutController localController; + private Key internalLastKeyEvent; + private Touch internalLastTouchEvent; static internal bool IsSupportedMultiWindow() { @@ -1849,9 +1851,13 @@ namespace Tizen.NUI [EditorBrowsable(EditorBrowsableState.Never)] public Key GetLastKeyEvent() { - Key ret = new Key(Interop.Window.GetLastKeyEvent(SwigCPtr), false); + if(internalLastKeyEvent == null) + { + internalLastKeyEvent = new Key(); + } + Interop.Window.InternalRetrievingLastKeyEvent(SwigCPtr, internalLastKeyEvent.SwigCPtr); if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); - return ret; + return internalLastKeyEvent; } /// @@ -1861,9 +1867,13 @@ namespace Tizen.NUI [EditorBrowsable(EditorBrowsableState.Never)] public Touch GetLastTouchEvent() { - Touch ret = new Touch(Interop.Window.GetLastTouchEvent(SwigCPtr), false); + if(internalLastTouchEvent == null) + { + internalLastTouchEvent = new Touch(); + } + Interop.Window.InternalRetrievingLastTouchEvent(SwigCPtr, internalLastTouchEvent.SwigCPtr); if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); - return ret; + return internalLastTouchEvent; } /// @@ -1947,6 +1957,11 @@ namespace Tizen.NUI childLayers.Clear(); localController?.Dispose(); + + internalLastKeyEvent?.Dispose(); + internalLastKeyEvent = null; + internalLastTouchEvent?.Dispose(); + internalLastTouchEvent = null; } diff --git a/test/Tizen.NUI.Samples/Tizen.NUI.Samples/Samples/PlaceHolderImageTest.cs b/test/Tizen.NUI.Samples/Tizen.NUI.Samples/Samples/PlaceHolderImageTest.cs new file mode 100644 index 0000000..a8acc8c --- /dev/null +++ b/test/Tizen.NUI.Samples/Tizen.NUI.Samples/Samples/PlaceHolderImageTest.cs @@ -0,0 +1,88 @@ +/* + * Copyright(c) 2023 Samsung Electronics Co., Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +using Tizen.NUI.BaseComponents; + +namespace Tizen.NUI.Samples +{ + using log = Tizen.Log; + public class PlaceHolderImageSample : IExample + { + private const string tag = "NUITEST"; + private Window mainWin; + private ImageView[] imageViews = null; + const int imageWidth = 500; + const int imageHeight = 500; + const int imageMax = 6; + Timer mTimer; + int image_count = 0; + + private static string[] url = new string[] + { + "https://images.pexels.com/photos/16027424/pexels-photo-16027424.jpeg", + "https://images.pexels.com/photos/214574/pexels-photo-214574.jpeg", + "https://images.pexels.com/photos/39853/woman-girl-freedom-happy-39853.jpeg", + "https://images.pexels.com/photos/842711/pexels-photo-842711.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=2", + "https://images.pexels.com/photos/15828302/pexels-photo-15828302.jpeg", + "", + }; + + public void Activate() + { + Initialize(); + } + + public void Deactivate() + { + } + + private void Initialize() + { + mainWin = NUIApplication.GetDefaultWindow(); + mainWin.BackgroundColor = Color.White; + mainWin.WindowSize = new Size2D(1920,1080); + Size2D windowSize = new Size2D(mainWin.Size.Width,mainWin.Size.Height); + + imageViews = new ImageView[imageMax]; + for(int i=0; i + { + image_count++; + for(int i=0;i