1. 程式人生 > >Android仿iphone時間軸相簿

Android仿iphone時間軸相簿

實現效果:

首先寫需要用到的圖片資料:時間、檔名、路徑等

  1. package com.example.a550211.cd;  
  2. import java.text.SimpleDateFormat;  
  3. import java.util.Date;  
  4. /**  
  5.  * Created by xing on 2017/7/4.  
  6.  */  
  7. public class ImageTime {  
  8.     private long time;  
  9.     private String thumbPath;  
  10.     private String filePath;  
  11.     private String fileName;  
  12.     public String getFileName() {  
  13.         return fileName;  
  14.     }  
  15.     public void setFileName(String fileName) {  
  16.         this.fileName = fileName;  
  17.     }  
  18.     public String getDate() {  
  19.         return new SimpleDateFormat("yyyy年MM月dd日")  
  20.                 .format(new Date(time*1000L));  
  21.     }  
  22.     public long getTime() {  
  23.         return time;  
  24.     }  
  25.     public void setTime(long time) {  
  26.         this.time = time;  
  27.     }  
  28.     public String getThumbPath() {  
  29.         return thumbPath;  
  30.     }  
  31.     public void setThumbPath(String thumbPath) {  
  32.         this.thumbPath
     = thumbPath;  
  33.     }  
  34.     public String getFilePath() {  
  35.         return filePath;  
  36.     }  
  37.     public void setFilePath(String filePath) {  
  38.         this.filePath = filePath;  
  39.     }  
  40. }  
2、實現手機圖片的獲取,這裡使用LoaderCallbacks<Cursor>去獲取手機圖片,然後儲存到date資料中
  1. package com.example.a550211.cd;  
  2. import android.app.LoaderManager;  
  3. import android.content.CursorLoader;  
  4. import android.content.Loader;  
  5. import android.database.Cursor;  
  6. import android.provider.MediaStore;  
  7. import android.support.v7.app.AppCompatActivity;  
  8. import android.os.Bundle;  
  9. import com.trustyapp.gridheaders.TrustyGridGridView;  
  10. import java.io.File;  
  11. import java.util.ArrayList;  
  12. public class MainActivity extends AppCompatActivity implements LoaderManager.LoaderCallbacks<Cursor> {  
  13.     private TrustyGridGridView gvImage;  
  14.     private ImageAdapter adapter;  
  15.     private ArrayList<ImageTime> fileInfo;  
  16.     @Override  
  17.     protected void onCreate(Bundle savedInstanceState) {  
  18.         super.onCreate(savedInstanceState);  
  19.         setContentView(R.layout.activity_main);  
  20.         initView();  
  21.     }  
  22.     private void initView() {  
  23.         gvImage = (TrustyGridGridView)findViewById(R.id.gv_image);  
  24.         adapter = new ImageAdapter(this,fileInfo);  
  25.         gvImage.setAdapter(adapter);  
  26.         fileInfo = new ArrayList<>();  
  27.         getLoaderManager().initLoader(1, null, this);  
  28.     }  
  29.     @Override  
  30.     public Loader<Cursor> onCreateLoader(int id, Bundle args) {  
  31.         String[] STORE_IMAGES = {  
  32.                 MediaStore.Images.Media.DATA,  
  33.                 MediaStore.Images.Media.DATE_ADDED,  
  34.                 MediaStore.Images.Thumbnails.DATA  
  35.         };  
  36.         CursorLoader cursorLoader = new CursorLoader(  
  37.                 this,  
  38.                 MediaStore.Images.Media.EXTERNAL_CONTENT_URI,  
  39.                 STORE_IMAGES,  
  40.                 null,  
  41.                 null,  
  42.                 null);  
  43.         return cursorLoader;  
  44.     }  
  45.     @Override  
  46.     public void onLoadFinished(Loader<Cursor> loader, Cursor cursor) {  
  47.         if (cursor.moveToNext()){  
  48.             int thumbPathIndex = cursor.getColumnIndex(MediaStore.Images.Thumbnails.DATA);  
  49.             int timeIndex = cursor.getColumnIndex(MediaStore.Images.Media.DATE_ADDED);  
  50.             int pathIndex = cursor.getColumnIndex(MediaStore.Images.Media.DATA);  
  51.             do{  
  52.                 ImageTime fi = new ImageTime();  
  53.                 String thumbPath = cursor.getString(thumbPathIndex);  
  54.                 Long date = cursor.getLong(timeIndex);  
  55.                 String filepath = cursor.getString(pathIndex);  
  56.                 File f = new File(filepath);  
  57.                 fi.setTime(date);  
  58.                 fi.setThumbPath(thumbPath);  
  59.                 fi.setFilePath(filepath);  
  60.                 fi.setFileName(f.getName());  
  61.                 fileInfo.add(fi);  
  62.             }while (cursor.moveToNext());  
  63.         }  
  64.         adapter.setData(fileInfo);  
  65.         adapter.notifyDataSetChanged();  
  66.     }  
  67.     @Override  
  68.     public void onLoaderReset(Loader<Cursor> loader) {  
  69.     }  
  70. }  
3、adapter中顯示資料實現,這裡使用到了TrustyGridSimpleAdapter,這裡面有兩個方法getHeaderId和getHeaderView具體功能實現下面程式碼。
  1. package com.example.a550211.cd;  
  2. import android.content.Context;  
  3. import android.view.View;  
  4. import android.view.ViewGroup;  
  5. 相關推薦

    Android仿iphone時間相簿

    實現效果: 首先寫需要用到的圖片資料:時間、檔名、路徑等 package com.example.a550211.cd;   import java.text.SimpleDateFormat;   import java.util.D

    android仿ios時間控制元件

    如果您認為本部落格不錯,讀後覺得有收穫,不妨打賞讚助我一下,讓我有動力繼續寫出高質量的部落格。 贈人玫瑰,手有餘香。分享技術,傳遞快樂。 有心課堂,傳遞的不僅僅是技術! QQ交流群:250468947 有心課堂會員,請加入VIP QQ交流

    Android仿Iphone圖示抖動效果

                    最近閒來無聊,研究了一下IPhone桌面圖示的抖動,網上有一個類似的事例,但是我看來效果實在不佳,自己也來寫一個玩玩,當然程式碼很亂,雜亂無章,不滿意的別罵我啊,當然也歡迎一起交流啊,嚯嚯首先是JAVA程式碼ShakeTestActivity.java:package com.

    Android 仿 iphone 自定義滾動選擇器

    背景:其實我們都知道,在我們做開發的過程中,會遇到Android 自身所帶控制元件不夠的情況,那麼這個時候,就需要我們自定義控制元件,所以,也就造成了,在開發的過程中,我們一定要掌握好自定義控制元件,不然,當你去一家公司,產品萌妹子過來找你,這個效果很不錯,問你能不能實

    Android自定義時間的實現

    時間軸 時間軸,顧名思義就是將發生的事件按照時間順序羅列起來,給使用者帶來一種更加直觀的體驗。京東和淘寶的物流順序就是一個時間軸(如圖),想必大家都不陌生。 時間軸的初探 初次見到這種UI,感覺整個佈局似曾相識,但面對那條時間軸卻又不知如何下手。其實,整個時間軸還是可以當

    Android仿快遞物流時間的程式碼實現

    首先,這篇參考了別人的程式碼。根據自己的專案需求簡單改造了一下,效果圖如下 xml:程式碼 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schem

    Android 小樣之高仿淘寶時間物流資訊

    最近做訂單系統,用到時間軸資訊,首先想到的是淘寶的物流時間軸(網購狗)。不多廢話,首先來看看淘寶物流資訊的樣式 這裡給出兩種解決方法: 使用LinearLayout動態新增view生成物流資訊

    Android時間效果,直接使用在你的項目中

    Coding return pro 查詢 gpo ava person turn rst 近期開發app搞到歷史查詢,受騰訊qq的啟示,搞一個具有時間軸效果的ui

    Android基礎控件——ListView實現時間效果

    fcm https size ont cti 組裝 ron down fontsize ListView實現時間軸效果 實現思路: 該View是通過ListView實現的,通過實體兩個字段內容content和時間time來展示每個ListItem 時間軸是使用上面一

    css仿支付寶提現到賬過程時間

     本來想找一個現成的仿支付寶提現的時間軸,才發現沒有,我覺得不應該啊,又找了一會還是沒喲,算了,自己寫一個吧,分享出來,有需要的朋友可以直接拿走。 需要:1、iconfont(阿里巴巴向量圖示庫找個圖示,我已經找下了,你不想用也可以自己再找)   &nb

    Android 時間 RecyclerView

     1.item佈局 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

    Android時間控制元件-WheelView

    在做時間軸或者某些型別的選擇時,有時候設計師會給我們出類似下面的效果: 因此,我們就需要重新自定義scrollview,,也就是移動端常用的時間軸控制元件:WheelView 實現方式直接上程式碼: public class WheelView extends

    仿Iphone的輪子時間選擇器(wheel picker)

    因為專案中,要要使用這個功能,就抽離出這部分。 activity: public class Time2Activity extends Activity implements android.view.View.OnClickListener { private

    Android 仿iOS帶有星期幾的日期時間選擇器

    最近看到一個需求,就是日期時間選擇器上面需要帶有星期幾來供使用者滑動選擇,我上網搜了一些發現很多demo都跟我以前寫過的一篇日期時間選擇器差不多,(點選檢視我以前寫過的日期時間選擇器)找不到帶有星期幾的日期時間選擇器,於是自己就研究了一下。實現效果如下 發

    android仿ios的時間滾動控制元件WheelView

    <LinearLayout android:layout_width="200dp" android:orientation="horizontal" android:layout_gravity=

    Android 仿QQ、新浪相簿的實現

    在移動應用中,很多時候都會用到圖片選擇、圖片裁剪等功能。最近我也在準備一個開源的相簿專案,以方便以後開發應用的時候使用,也儘可能的方便需要的人。一個完整的相簿,應該包含相簿列表、圖片列表、圖片的單選和多選、圖片的裁剪、拍照、多選圖片的大圖預覽等功能。這也是我這個

    仿支付寶獎勵金的時間(也可用於做垂直進度條)

    前言: 這是一個,既可以用做時間軸,也可以用做垂直進度條的自定義控制元件。(沒有用系統的Progress控制元件,進度是自己用Canvas畫的)。 先看Gif效果圖: 通過介面,來定義自定義控制元件的功能。閱讀程式碼的時候,看介面就行。具體功能,再到自

    Android 聯絡人列表介面(仿iphone、A~Z字母排列、過濾搜尋)

    前些天需要做一個聯絡人的列表介面,無奈網上的的demo都不太好看,而且有些bug也不少,只好自己借鑑著弄好了一個出來,順便美化一下,感覺還是挺好看。 先看下效果是不是你想要的:                         ContactsActivity.java

    自定義view,仿淘寶快遞的物流資訊的時間

     學了Android有一段時間了,一直沒有時間寫部落格,趁著週末有點空,就把自己做的一些東西寫下來. 一方面鍛鍊一下自己的寫文件的能力,另一方面分享程式碼的同時也希望能與大家交流一下技術,共同學習,共同進步.  廢話不多少說,我們先來看看我們自定義view

    Android自定義View之ListView實現時間效果:我只是個送快遞的。

    先上效果圖: 實現時間軸的原理 listview的基本使用,相信大家都很熟悉。先在layout下新建一個xml佈局檔案,對應一個子項的listView的顯示內容。在上面的圖我們可以看到,每一項都是 有3個 textview控制元件