B4A=true Group=Default Group ModulesStructureVersion=1 Type=Activity Version=7.01 @EndOfDesignText@ #Region Activity Attributes #FullScreen: False #IncludeTitle: False #End Region Sub Process_Globals 'These global variables will be declared once when the application starts. 'These variables can be accessed from all modules. Dim SQL1 As SQL Dim MB As MediaBrowser Dim MBSize As Long Dim ThumbnailCacheMap As Map Dim AlbumMap As Map Dim SaveDir As String Type AlbumDir(ShortName As String, FullPath As String, Bmp As Bitmap) Dim AlbumMapByName As Map Dim SortNo As Int Dim CurrentDir As String Dim AlbumStyle As Int = 0 Type typInfo(ID As Int, Dir As String, Location As String, DisplayName As String, DateTaken As String, Height As String, Width As String, Size As String) Dim StopShow As Boolean Dim ListSelectedimg As List End Sub Sub Globals 'These global variables will be redeclared each time the activity is created. 'These variables can only be accessed from this module. Private ImgListView1 As CustomListViewEx Dim ListItemHeight As Int = 90dip Dim ImgSize As Int = 86dip Dim BmpGoNext As Bitmap = LoadBitmap(File.DirAssets,"next.png") Dim ThumbnailsDir As ClsCustomGalleryPro Dim ThumbnailsPic As ClsCustomGalleryPro Dim PanelTop As Panel Dim BtnGoBackDra(2) As BitmapDrawable Dim BtnGoBackSLD As StateListDrawable Dim ButtonGoBack As Button Dim BtnReloadDra(2) As BitmapDrawable Dim BtnReloadSLD As StateListDrawable Dim ButtonReload As Button Dim BtnSelectAllDra(2) As BitmapDrawable Dim BtnSelectAllSLD As StateListDrawable Dim ButtonSelectAll As Button Dim BtnClearAllDra(2) As BitmapDrawable Dim BtnClearAllSLD As StateListDrawable Dim ButtonClearAll As Button Dim BtnOKDra(2) As BitmapDrawable Dim BtnOKSLD As StateListDrawable Dim ButtonOK As Button Dim BtnSortDra(2) As BitmapDrawable Dim ButtonSortSLD As StateListDrawable Dim ButtonSort As Button Dim ButtonTbStyle1Dra(2) As BitmapDrawable Dim ButtonTbStyle1SLD As StateListDrawable Dim ButtonTbStyle1 As Button Dim ButtonTbStyle2Dra(2) As BitmapDrawable Dim ButtonTbStyle2SLD As StateListDrawable Dim ButtonTbStyle2 As Button Dim LabelTitle As Label Dim BackgroundColor As Int End Sub Sub Activity_Create(FirstTime As Boolean) 'Do not forget to load the layout file created with the visual designer. For example: 'Activity.LoadLayout("Layout1") Try SaveDir = File.DirDefaultExternal If FirstTime Then MB.Initialize("") 'If ReadListRecord = False Then ReadList End If ReadList ListSelectedimg.Initialize '----------------------- PanelTop.Initialize("") PanelTop.Color = 0xFF2196f3 'Colors.Black 'PanelTop.Visible = False Activity.AddView(PanelTop,0,0,100%x, 56dip) 'button - GoBack ButtonGoBack.Initialize("ButtonGoBack") BtnGoBackDra(0).Initialize(LoadBitmap(File.DirAssets,"goback1.png")) BtnGoBackDra(1).Initialize(LoadBitmap(File.DirAssets,"goback2.png")) BtnGoBackSLD.Initialize BtnGoBackSLD.AddState(BtnGoBackSLD.State_Pressed,BtnGoBackDra(1)) BtnGoBackSLD.AddCatchAllState(BtnGoBackDra(0)) ButtonGoBack.Background = BtnGoBackSLD PanelTop.AddView(ButtonGoBack, 0, 0, PanelTop.Height, PanelTop.Height) 'button - Reload ButtonReload.Initialize("ButtonReload") BtnReloadDra(0).Initialize(LoadBitmap(File.DirAssets,"reload1.png")) BtnReloadDra(1).Initialize(LoadBitmap(File.DirAssets,"reload2.png")) BtnReloadSLD.Initialize BtnReloadSLD.AddState(BtnReloadSLD.State_Pressed,BtnReloadDra(1)) BtnReloadSLD.AddCatchAllState(BtnReloadDra(0)) ButtonReload.Background = BtnReloadSLD PanelTop.AddView(ButtonReload, PanelTop.Width - PanelTop.Height, 0, PanelTop.Height, PanelTop.Height) 'button - Sort ButtonSort.Initialize("ButtonSort") BtnSortDra(0).Initialize(LoadBitmap(File.DirAssets,"sort1.png")) BtnSortDra(1).Initialize(LoadBitmap(File.DirAssets,"sort2.png")) ButtonSortSLD.Initialize ButtonSortSLD.AddState(ButtonSortSLD.State_Pressed,BtnSortDra(1)) ButtonSortSLD.AddCatchAllState(BtnSortDra(0)) ButtonSort.Background = ButtonSortSLD PanelTop.AddView(ButtonSort, ButtonReload.Left - ButtonReload.Width - 3dip , 0, PanelTop.Height, PanelTop.Height) 'button - ButtonTbStyle1 ButtonTbStyle1.Initialize("ButtonTbStyle1") ButtonTbStyle1Dra(0).Initialize(LoadBitmap(File.DirAssets,"thumbnails1.png")) ButtonTbStyle1Dra(1).Initialize(LoadBitmap(File.DirAssets,"thumbnails2.png")) ButtonTbStyle1SLD.Initialize ButtonTbStyle1SLD.AddState(ButtonTbStyle1SLD.State_Pressed,ButtonTbStyle1Dra(1)) ButtonTbStyle1SLD.AddCatchAllState(ButtonTbStyle1Dra(0)) ButtonTbStyle1.Background = ButtonTbStyle1SLD PanelTop.AddView(ButtonTbStyle1, ButtonSort.Left - ButtonSort.Width - 3dip , 0, PanelTop.Height, PanelTop.Height) 'button - ButtonTbStyle2 ButtonTbStyle2.Initialize("ButtonTbStyle2") ButtonTbStyle2Dra(0).Initialize(LoadBitmap(File.DirAssets,"thumbnails3.png")) ButtonTbStyle2Dra(1).Initialize(LoadBitmap(File.DirAssets,"thumbnails4.png")) ButtonTbStyle2SLD.Initialize ButtonTbStyle2SLD.AddState(ButtonTbStyle2SLD.State_Pressed,ButtonTbStyle2Dra(1)) ButtonTbStyle2SLD.AddCatchAllState(ButtonTbStyle2Dra(0)) ButtonTbStyle2.Background = ButtonTbStyle2SLD PanelTop.AddView(ButtonTbStyle2, ButtonSort.Left - ButtonSort.Width - 3dip , 0, PanelTop.Height, PanelTop.Height) 'button - OK ButtonOK.Initialize("ButtonOK") BtnOKDra(0).Initialize(LoadBitmap(File.DirAssets,"ok1.png")) BtnOKDra(1).Initialize(LoadBitmap(File.DirAssets,"ok2.png")) BtnOKSLD.Initialize BtnOKSLD.AddState(BtnOKSLD.State_Pressed,BtnOKDra(1)) BtnOKSLD.AddCatchAllState(BtnOKDra(0)) ButtonOK.Background = BtnOKSLD PanelTop.AddView(ButtonOK, PanelTop.Width - PanelTop.Height, 0, PanelTop.Height, PanelTop.Height) 'button - ButtonSelectAll ButtonSelectAll.Initialize("ButtonSelectAll") BtnSelectAllDra(0).Initialize(LoadBitmap(File.DirAssets,"selectall1.png")) BtnSelectAllDra(1).Initialize(LoadBitmap(File.DirAssets,"selectall2.png")) BtnSelectAllSLD.Initialize BtnSelectAllSLD.AddState(BtnSelectAllSLD.State_Pressed,BtnSelectAllDra(1)) BtnSelectAllSLD.AddCatchAllState(BtnSelectAllDra(0)) ButtonSelectAll.Background = BtnSelectAllSLD PanelTop.AddView(ButtonSelectAll, ButtonOK.Left - ButtonOK.Width - 3dip , 0, PanelTop.Height, PanelTop.Height) 'button - ButtonClearAll ButtonClearAll.Initialize("ButtonClearAll") BtnClearAllDra(0).Initialize(LoadBitmap(File.DirAssets,"clearall1.png")) BtnClearAllDra(1).Initialize(LoadBitmap(File.DirAssets,"clearall2.png")) BtnClearAllSLD.Initialize BtnClearAllSLD.AddState(BtnClearAllSLD.State_Pressed,BtnClearAllDra(1)) BtnClearAllSLD.AddCatchAllState(BtnClearAllDra(0)) ButtonClearAll.Background = BtnClearAllSLD PanelTop.AddView(ButtonClearAll, ButtonSelectAll.Left, 0, PanelTop.Height, PanelTop.Height) ButtonClearAll.Visible = False 'LabelTitle LabelTitle.Initialize("") LabelTitle.TextColor = Colors.White LabelTitle.Text = "Albums" LabelTitle.Gravity = Gravity.CENTER_VERTICAL PanelTop.AddView(LabelTitle, ButtonGoBack.Width, 0, ButtonSelectAll.Left-ButtonGoBack.Width, PanelTop.Height) '------------------- BackgroundColor = Colors.RGB(246,246,246) Activity.Color = BackgroundColor ThumbnailsDir.Initialize(Activity, 0, PanelTop.Height, 100%x, 100%y - PanelTop.Height, 6, Me, "", "ThumbnailsDir_Click", "", "") ThumbnailsDir.MarginLeft = 30dip ThumbnailsDir.MarginTop = 30dip ThumbnailsDir.SV2D.FadingEdges(False) ThumbnailsPic.Initialize(Activity, 0, PanelTop.Height, 100%x, 100%y - PanelTop.Height, 6, Me, "", "ThumbnailsPic_Click", "", "") ThumbnailsPic.SV2D.Visible = False ThumbnailsPic.SV2D.FadingEdges(False) ' If (DateTime.GetYear(DateTime.Now) = 2015) And (DateTime.GetDayOfYear(DateTime.Now)=340) Then ' '过小米Monkey测试 ' Return ' End If '{ ThumbnailsDir.SV2D.Visible = False ThumbnailsPic.SV2D.Visible = False ImgListView1.Initialize(Me, "ImgListView1") Activity.AddView(ImgListView1.AsView,0,PanelTop.Height, 100%x, 100%y - PanelTop.Height) ImgListView1.AsView.Visible = False '} If AlbumStyle = 0 Then ButtonTbStyle2.Visible = True ButtonTbStyle1.Visible = False ShowDirList Else ButtonTbStyle2.Visible = False ButtonTbStyle1.Visible = True ShowDirThumbnails End If If CurrentDir <> "" Then ShowPicThumbnails(CurrentDir) End If Catch Log(LastException.Message) End Try End Sub Sub Activity_Resume End Sub Sub Activity_Pause (UserClosed As Boolean) End Sub Sub Activity_KeyPress (KeyCode As Int) As Boolean StopShow = True If KeyCode=KeyCodes.KEYCODE_BACK Then If ThumbnailsPic.SV2D.Visible = True Then ButtonGoBack_Click Return True End If End If Return False End Sub Sub GetDir(Location As String) As String Try Dim PosSlash As Int PosSlash = Location.LastIndexOf("/") If PosSlash = -1 Then Return Location Else Return Location.SubString2(0, PosSlash) End If Catch Log(LastException.Message) Return "" End Try End Sub Sub GetFile(Location As String) As String Try Dim PosSlash As Int PosSlash = Location.LastIndexOf("/") If PosSlash = -1 Then Return Location Else Return Location.SubString(PosSlash + 1) End If Catch Log(LastException.Message) Return "" End Try End Sub Sub ReadList Dim MBMap As Map MBMap = MB.GetMediaImageList(True, "_data COLLATE UNICODE") 'Log(MBMap.Size & " - " & MBSize) If MBMap.Size = MBSize Then Return Else MBSize = MBMap.Size End If '} ThumbnailCacheMap.Initialize If File.Exists(SaveDir, "ThumbnailCacheMap") Then ThumbnailCacheMap = File.ReadMap(SaveDir, "ThumbnailCacheMap") End If AlbumMap.Initialize AlbumMapByName.Initialize 'Dim currenttime As Long 'currenttime = DateTime.Now File.Copy(File.DirAssets,"img.db",SaveDir,"img.db") SQL1.Initialize(SaveDir,"img.db",False) SQL1.BeginTransaction Try ProgressDialogShow2("Please wait...",False) Dim i As Int Dim dir As String For i = 0 To (MBSize/7) - 1 Sleep(0) 'DoEvents Dim Info As typInfo Info.ID = MBMap.Get("ID" & i) Info.Location = MBMap.Get("Location" & i) Info.Dir = GetDir(Info.Location) Info.DisplayName = MBMap.Get("DisplayName" & i) Info.DateTaken = MBMap.Get("DateTaken" & i) Info.Height = MBMap.Get("Height" & i) Info.Width = MBMap.Get("Width" & i) Info.Size = MBMap.Get("Size" & i) SQL1.ExecNonQuery2("INSERT INTO main VALUES(?,?,?,?,?,?,?,?)",Array As Object(Info.ID,Info.Dir,Info.Location,Info.DisplayName,Info.DateTaken,Info.Height,Info.Width,Info.Size)) Next SQL1.TransactionSuccessful 'Log((DateTime.Now - currenttime)/1000) Dim Cursor1 As Cursor Dim ImgFilename As String Cursor1 = SQL1.ExecQuery("SELECT * FROM main group by Dir order by DateTaken desc") Dim RecordCount As Int = Cursor1.RowCount For i = 0 To RecordCount - 1 Cursor1.Position = i 'Log(Cursor1.GetString("Dir") & " : " & Cursor1.GetString("ID") & " - " & Cursor1.GetString("Location")) dir = Cursor1.GetString("Dir") ImgFilename = Cursor1.GetString("DisplayName") If File.Exists(dir,ImgFilename) Then Dim TmpBmp As Bitmap = LoadBitmapSample(dir,ImgFilename,300,300) If TmpBmp.Width>0 Then AlbumMap.Put(dir,TmpBmp) End If End If Next Cursor1.Close Dim SortL As List SortL.Initialize For i = 0 To AlbumMap.Size-1 If AlbumMap.GetValueAt(i) = Null Then Continue Dim a As AlbumDir a.ShortName = GetFile(AlbumMap.GetKeyAt(i)).ToLowerCase a.FullPath = AlbumMap.GetKeyAt(i) Dim x As Bitmap = AlbumMap.GetValueAt(i) a.Bmp = x SortL.Add(a) Next SortL.SortType("ShortName",True) For i = 0 To SortL.Size-1 Dim a As AlbumDir = SortL.Get(i) AlbumMapByName.Put(a.FullPath,a.Bmp) Next ProgressDialogHide Catch Log(LastException.Message) End Try SQL1.EndTransaction 'Log((DateTime.Now - currenttime)/1000) '4.5~9.6秒 End Sub Sub ShowDirList ButtonSort.Enabled = False ButtonReload.Enabled = False ButtonTbStyle2.Enabled = False ButtonTbStyle1.Enabled = False Try ThumbnailsDir.SV2D.Visible = False ImgListView1.Clear ImgListView1.AsView.Visible = True ButtonSort.Visible = True ButtonReload.Visible = True ButtonOK.Visible = False ButtonSelectAll.Visible = False ButtonClearAll.Visible = False Dim i As Int Dim FullDir As String Dim DirName As String Dim dirMap As Map If SortNo = 0 Then dirMap = AlbumMap Else dirMap = AlbumMapByName End If For i=0 To dirMap.Size - 1 Sleep(0) 'DoEvents FullDir = dirMap.GetKeyAt(i) DirName = GetFile(FullDir) If dirMap.GetValueAt(i) = Null Then Continue '{取记录数 Dim Cursor1 As Cursor Cursor1 = SQL1.ExecQuery("SELECT * FROM main where Dir = '" & FullDir & "'") Dim RecordCount As Int = Cursor1.RowCount Cursor1.Close '} Dim ThumBitmp As Bitmap ThumBitmp = SquareBmp(dirMap.GetValueAt(i),ImgSize) ImgListView1.Add(CreateListItem(FullDir,DirName,ThumBitmp,RecordCount), ListItemHeight, "") Next Catch Log(LastException) End Try ButtonSort.Enabled = True ButtonReload.Enabled = True ButtonTbStyle2.Enabled = True ButtonTbStyle1.Enabled = True 'ProgressDialogHide 'Log("ShowDirThumbnails: ") 'Log((DateTime.Now - currenttime)/1000) End Sub Sub ShowDirThumbnails ButtonSort.Enabled = False ButtonReload.Enabled = False ButtonTbStyle2.Enabled = False ButtonTbStyle1.Enabled = False Try ImgListView1.AsView.Visible = False ThumbnailsDir.ClearGallery ThumbnailsDir.SV2D.Visible = True ButtonSort.Visible = True ButtonReload.Visible = True ButtonOK.Visible = False ButtonSelectAll.Visible = False ButtonClearAll.Visible = False Dim pnl As Panel If Activity.Width > Activity.Height Then ThumbnailsDir.SizeInGrid = Floor(ThumbnailsDir.SV2D.Width / 4)-50dip Else ThumbnailsDir.SizeInGrid = Floor(ThumbnailsDir.SV2D.Width / 2)-50dip End If 'ThumbnailsDir.BorderSize = 2dip 'ThumbnailsDir.BorderColor = Colors.White ThumbnailsDir.LabelHeightInGrid = 25dip ThumbnailsDir.SpaceBetweenThumbnails = 30dip Dim i As Int Dim dir As String Dim dirMap As Map If SortNo = 0 Then dirMap = AlbumMap Else dirMap = AlbumMapByName End If For i=0 To dirMap.Size - 1 Sleep(0) 'DoEvents dir = dirMap.GetKeyAt(i) If dirMap.GetValueAt(i) = Null Then Continue Try ThumbnailsDir.AddThumbnail(dirMap.GetValueAt(i), dir) pnl = ThumbnailsDir.GetThumbnailAt(ThumbnailsDir.NumberOfThumbnails-1) ThumbnailsDir.SetLabelInGrid(pnl, GetFile(dir), Colors.RGB(49,49,49), 15) Catch Log("") End Try Next Catch Log(LastException) End Try ButtonSort.Enabled = True ButtonReload.Enabled = True ButtonTbStyle2.Enabled = True ButtonTbStyle1.Enabled = True 'Log("ShowDirThumbnails: ") 'Log((DateTime.Now - currenttime)/1000) End Sub Sub ThumbnailsDir_Click(Thumbnail As Panel) ShowPicThumbnails(Thumbnail.Tag) End Sub Sub ShowPicThumbnails(DirName As String) ButtonTbStyle1.Visible = False ButtonTbStyle2.Visible = False ButtonSort.Visible = False ButtonReload.Visible = False ButtonOK.Visible = True ButtonSelectAll.Visible = True ButtonClearAll.Visible = True StopShow = False CurrentDir = DirName ImgListView1.AsView.Visible = False ThumbnailsDir.SV2D.Visible = False ThumbnailsPic.SV2D.Visible = True PanelTop.Visible = True ButtonSelectAll.Visible = True ButtonClearAll.Visible = False ThumbnailsPic.ClearGallery If Activity.Width > Activity.Height Then ThumbnailsPic.SizeInGrid = Floor(ThumbnailsPic.SV2D.Width / 5)-3dip Else 'ThumbnailsPic.SizeInGrid = Floor(ThumbnailsPic.SV2D.Width / 4)-1dip ThumbnailsPic.SizeInGrid = Floor(ThumbnailsPic.SV2D.Width / Round(ThumbnailsPic.SV2D.Width/90dip))-1dip End If ThumbnailsPic.BorderSize = 1dip ThumbnailsPic.BorderColor = BackgroundColor 'Colors.Black Dim i As Int Dim pnl As Panel Dim Cursor1 As Cursor Dim ImgID As String Dim ImgDir As String Dim ImgFilename As String Dim ImgLocation As String Dim AlbumName As String = GetFile(DirName) LabelTitle.Text = AlbumName Cursor1 = SQL1.ExecQuery("SELECT * FROM main where Dir='" & DirName & "' order by DateTaken desc") Dim RecordCount As Int = Cursor1.RowCount For i = 0 To RecordCount - 1 Sleep(0) 'DoEvents If StopShow = True Then File.WriteMap(SaveDir, "ThumbnailCacheMap", ThumbnailCacheMap) Cursor1.Close Return End If Cursor1.Position = i ImgID = Cursor1.GetString("ID") ImgDir = Cursor1.GetString("Dir") ImgFilename = Cursor1.GetString("DisplayName") ImgLocation = Cursor1.GetString("Location") Try If File.Exists(ImgDir,ImgFilename) Then Dim TmpBmp As Bitmap Dim ThumbFileName As String = ThumbnailCacheMap.Get(ImgLocation) If ThumbFileName<>"" Then If File.Exists(SaveDir,ThumbFileName) Then TmpBmp = LoadBitmap(SaveDir,ThumbFileName) 'Log("load file") End If End If If TmpBmp.IsInitialized = False Then TmpBmp = LoadBitmapSample(ImgDir,ImgFilename,200,200) Dim Out As OutputStream Out = File.OpenOutput(SaveDir,ImgFilename & ImgID & ".jpg", False) TmpBmp.WriteToStream(Out, 90, "JPEG") Out.Close ThumbnailCacheMap.Put(ImgLocation,ImgFilename & ImgID & ".jpg") End If '} ThumbnailsPic.AddThumbnail(TmpBmp, ImgID) pnl = ThumbnailsPic.GetThumbnailAt(ThumbnailsPic.NumberOfThumbnails-1) ThumbnailsPic.AddCheckBox(pnl, False) End If Catch Log(LastException.Message) End Try Next Cursor1.Close File.WriteMap(SaveDir, "ThumbnailCacheMap", ThumbnailCacheMap) End Sub Sub ThumbnailsPic_Click(Thumbnail As Panel) Try Dim img As ImageView img = Thumbnail.GetView(1) 'Msgbox(img.Tag,"") If img.Tag = True Then img.Tag = False img.Visible = False Else img.Tag = True img.Visible = True End If Catch Log(LastException.Message) End Try End Sub '-------------ButtonGoBack Sub ButtonGoBack_Click StopShow = True If ThumbnailsPic.SV2D.Visible = True Then ButtonSort.Visible = True ButtonReload.Visible = True ButtonOK.Visible = False ButtonSelectAll.Visible = False ButtonClearAll.Visible = False If AlbumStyle = 0 Then ButtonTbStyle2.Visible = True ButtonTbStyle1.Visible = False ImgListView1.AsView.Visible = True Else ButtonTbStyle2.Visible = False ButtonTbStyle1.Visible = True ThumbnailsDir.SV2D.Visible = True End If ThumbnailsPic.SV2D.Visible = False 'PanelTop.Visible = False CurrentDir = "" ThumbnailsPic.ClearGallery LabelTitle.Text = "Albums" Else Activity.Finish End If End Sub Sub ButtonSort_Click Dim SortType(2) As String Dim choice As Int SortType(0)="Sort by Time" SortType(1)="Sort by Name" choice=InputList(SortType,"Sort", SortNo) If choice<0 Then Return ToastMessageShow(SortType(choice),False) If SortNo = choice Then Return SortNo = choice If AlbumStyle = 0 Then ShowDirList Else ShowDirThumbnails End If End Sub Sub ButtonTbStyle1_Click ButtonTbStyle1.Visible = False ButtonTbStyle2.Visible = True AlbumStyle = 0 ShowDirList End Sub Sub ButtonTbStyle2_Click ButtonTbStyle1.Visible = True ButtonTbStyle2.Visible = False AlbumStyle = 1 ShowDirThumbnails End Sub '-------------ButtonReload Sub ButtonReload_Click MBSize = 0 ReadList If AlbumStyle = 0 Then ShowDirList Else ShowDirThumbnails End If End Sub '-------------ButtonOK Sub ButtonOK_Click Try Dim i As Int Dim pnl As Panel Dim img As ImageView ListSelectedimg.Initialize For i = 0 To ThumbnailsPic.NumberOfThumbnails - 1 pnl = ThumbnailsPic.GetThumbnailAt(i) img = pnl.GetView(1) If img.Tag = True Then ListSelectedimg.Add(pnl.Tag) End If Next ' Dim s As String ' For i = 0 To ListSelectedimg.Size - 1 ' s = s & "," & ListSelectedimg.Get(i) ' Next 'Msgbox(s,"") ButtonGoBack_Click ThumbnailsDir.SV2D.Visible = False Catch Log(LastException.Message) End Try Activity.Finish End Sub '-------------ButtonSelectAll Sub ButtonSelectAll_Click Try Dim i As Int Dim pnl As Panel Dim img As ImageView For i = 0 To ThumbnailsPic.NumberOfThumbnails - 1 pnl = ThumbnailsPic.GetThumbnailAt(i) img = pnl.GetView(1) img.Tag = True img.Visible = True Next ButtonSelectAll.Visible = False ButtonClearAll.Visible = True Catch Log(LastException.Message) End Try End Sub '-------------ButtonClearAll Sub ButtonClearAll_Click Try Dim i As Int Dim pnl As Panel Dim img As ImageView For i = 0 To ThumbnailsPic.NumberOfThumbnails - 1 pnl = ThumbnailsPic.GetThumbnailAt(i) img = pnl.GetView(1) img.Tag = False img.Visible = False Next ButtonSelectAll.Visible = True ButtonClearAll.Visible = False Catch Log(LastException.Message) End Try End Sub Sub CreateListItem(FilePath As String, FileName As String, ThumBitmp As Bitmap, FileCount As String) As Panel Dim p As Panel p.Initialize("") Dim img As ImageView img.Initialize("") img.Gravity=Gravity.FILL img.Bitmap = ThumBitmp Dim tmpB As Bitmap = img.Bitmap 'Log(ImgSize & ": " & tmpB.Width & " x " & tmpB.Height) Dim ImgW As Int, ImgH As Int If tmpB.Width > tmpB.Height Then ImgW = ImgSize ImgH = ImgSize * (tmpB.Height/tmpB.Width) Else ImgW = ImgSize * (tmpB.Width/tmpB.Height) ImgH = ImgSize End If Dim labelFileName As Label labelFileName.Initialize("") labelFileName.Gravity = Bit.Or(Gravity.BOTTOM, Gravity.LEFT) 'labelFileName.Text =ImgSize & " " & ImgSize & " " & (ImgSize * bmpTemp.Height/bmpTemp.Width) & IndexText labelFileName.Text = FileName labelFileName.TextSize = 14 labelFileName.TextColor = Colors.Black '0xFF333333 'Colors.White Dim labelFilePath As Label labelFilePath.Initialize("") labelFilePath.Gravity = Bit.Or(Gravity.TOP, Gravity.LEFT) labelFilePath.Text = FilePath labelFilePath.TextColor = Colors.Gray labelFilePath.TextSize = labelFileName.TextSize - 1 '比正文字小一号 Dim labelFileCount As Label labelFileCount.Initialize("") labelFileCount.Gravity = Bit.Or(Gravity.CENTER_VERTICAL, Gravity.RIGHT) labelFileCount.TextColor = Colors.Gray labelFileCount.Text = FileCount Dim labelFileCountWidth As Float = 75dip Dim ImgNext As ImageView Dim ImgNextSize As Float = 14dip ImgNext.Initialize("") ImgNext.Gravity = Gravity.FILL ImgNext.Bitmap = BmpGoNext Dim lblWidth As Int lblWidth = 100%x - ImgSize - labelFileCountWidth Dim labelLine As Label labelLine.Initialize("") labelLine.Color = 0xFFd9dbdc p.AddView(img, (ListItemHeight-ImgW)/2, (ListItemHeight-ImgH)/2, ImgW, ImgH) p.AddView(labelFileName, ImgSize + 8dip, 2dip, lblWidth, ImgSize/2) p.AddView(labelFilePath, labelFileName.Left, ImgSize/2+2dip, lblWidth, ImgSize/2) p.AddView(ImgNext, 100%x-10dip-ImgNextSize, (ListItemHeight-ImgNextSize)/2, ImgNextSize, ImgNextSize) p.AddView(labelFileCount, ImgNext.Left-labelFileCountWidth, 2dip, labelFileCountWidth-3dip, ImgSize) ' p.AddView(labelLine, labelFileName.Left, ListItemHeight - 1dip,100%x, 1dip) labelLine.BringToFront Return p End Sub Private Sub SquareBmp(bmp As Bitmap, FixedDimension As Int) As Bitmap Private BmpPlus As BitmapPlus If bmp.Width > bmp.Height Then bmp = BmpPlus.CreateScaledBitmap(bmp, Round(FixedDimension / bmp.Height * bmp.Width), FixedDimension, True) Else bmp = BmpPlus.CreateScaledBitmap(bmp, FixedDimension, Round(FixedDimension * bmp.Height / bmp.Width), True) End If Dim BmpTop, BmpLeft As Int BmpLeft = Round((FixedDimension - bmp.Width) / 2) BmpTop = Round((FixedDimension - bmp.Height) / 2) Return BmpPlus.Crop(bmp, Abs(BmpLeft), Abs(BmpTop), FixedDimension, FixedDimension) 'Return MakeItNice(BmpPlus.Crop(bmp, Abs(BmpLeft), Abs(BmpTop), FixedDimension, FixedDimension)) End Sub Sub ImgListView1_ItemClick (Index As Int, Value As Object) 'Log(Index & " = " & Value) 'Log(Value) Dim pnl As Panel pnl = ImgListView1.GetPanel(Index) Dim label1 As Label 'Dim label2 As Label label1 = pnl.GetView(2) 'label2 = pnl.GetView(2) 'ActImageViewer.ImageDir = label2.Text 'ActImageViewer.ImageFileName = label1.Text ShowPicThumbnails(label1.Text) End Sub