Blog

\UI,UX/ APP Prototype工具

  1. 設計畫畫

    • SKETCH(HTTPS://WWW.SKETCHAPP.COM/推!

      • 這個軟體只for mac設計,主要是拿來構思畫畫的。

      • 裡面有一些樣板(web, iOS, Android, icon, 平板都有),已經內建了Material Design 。

      • 樣版畫完可以匯出圖檔
      • 參考的樣式會去這裡觀摩下載 http://www.sketchappsources.com/

      • 有些樣式會因Sketch版本不同無法開啟
    • MOQUPS(HTTPS://MOQUPS.COM/)

      • 可以直接在網頁上設計畫畫 (框線圖製作)
      • 建議使用GOOGLE瀏覽器
      • 自由拉動拖曳組合排列,即可完成一款精緻的線框UI設計圖
  2.  PROTOTYPE

    • MARVEL(HTTPS://MARVELAPP.COM/ )  推!

      • Sketch – Marvelplugin https://marvelapp.com/prototype-with-sketch/
        幫助我們將畫好的畫面直接上傳到Marvel網站上進行Prototype

      • 操作滿容易的,成品也可用網址…等方法分享

      • 使用者可留言

      • Marvel app所以我覺得不錯Demo。(設計網站也沒問題)

    • POPAPP(HTTPS://POPAPP.IN/)

      • 有出app
      • 方便用於手繪匯入app操作(手畫 −> 拍照匯入 −> Prototype)
      • 使用者可留言
    • INVISION(HTTPS://PROJECTS.INVISIONAPP.COM/推!

      • 一開始提供給使用者mobile, web, web app 3種樣板
      • app 建議製作尺寸android(iOS)就是720 * 1232(750 * 1334)
      • 成品也可用網址…等方法分享
      • 使用者可留下動態留言(點任一點留言)
      • 手機上預覽app: Skala Preview

 

參考來源
  1. 我用 Sketch 設計 Android app 的工作流程 — Design + Sketch App — Medium
Advertisements

\Android/ Adapter 觀念

前言

Adapter (n.) 適配器; 多功能插頭; 改編者。

在Android的世界裡,Adapter是Database和UI(View)之間一個重要的橋樑,用於連接後端資料和前端介面。

我們常用的View,包括ListView,GridView, Spinner等,常常伴隨著Adapter的使用。

如下圖直觀的表達了Data、Adapter、View三者的關係:

f15b47d3418249a43e56a800abc75e83

種類

比較常用的有BaseAdapter,SimpleAdapter,ArrayAdapter,SimpleCursorAdapter等。

  1. ArrayAdapter可繼承自BaseAdapter,最為簡單,只能展示一行字。
  2. 利用ArrayAdapter的add()方法新增資料到adapter尾端或是用insert()新增資料到特定的位置;刪除資料則使用remove()方法。
  3. ListView類別是負責顯示在螢幕上,adapter類別才是負責處理資料的繫結。一旦adapter內的資料有了變更,則adapter和ListView的內容就失去了同步,這是侯需要由adapter發送一個notifyDataSetChanged()方法通知ListView重新同步顯示的內容。
  1. 當ListView需要附加其他更強大的功能時,就必須重新自定義一個Adapter,此時可繼承使用BaseAdapter來建構,具有較高的靈活性。
  2. 使用者自定的Layout時需要覆寫getCount(), getItem(Int position), getItemId(int position), 還有 getView(int position, View convertView, ViewGroup parent)那麼多函式。

有最好的擴充性,可以定義各種各樣的佈局出來,可以放上ImageView(圖片),還可以放上Button(按鈕),CheckBox(複選框)等等。代碼都可以直接繼承了ListActivity。

可以適用於簡單的純文字型ListView,它需要Cursor的字段和UI的id對應起來。如需要實現更複雜的UI也可以重寫其他方法。可以認為是SimpleAdapter對資料庫的簡單結合,可以方便地把數據庫的內容以列表的形式展示出來。

擴展自Adapter 的適配器是在Spinner 與數據之間的一座橋樑。一個Spinner Adapter 允許定義兩個不同的視圖:一是在Spinner 上顯示數據,另一個是當Spinner 按下時在下拉列表裡顯示數據。

參考來源

  1. ListView | Android Developers
  2. [Android] 自訂ListView « Huli’s Blog
  3. Android之Adapter用法总结 – Devin Zhang – 博客园
  4. Android入門2:從GridView控件使用到自定義Adapter – 簡書
  5. 雜技本 – Android程式開發: ArrayAdapter的使用
  6. Android API 中文(50) —— SpinnerAdapter – 農民伯伯- 博客園

\Android/ Manifest.xml 簡介 & Tag

簡介說明 :

是一個用來描述App的整體資訊設定的XML檔,可向 Android 系統顯示應用程式的基本資訊,也就是系統在執行該應用程式的任何程式碼之前必須具備的資訊。

Manifect.xml 功能 :

Intent Filters 詳情請配合參閱\Android/ Intent應用

應用程式元件是由 Intent 來啟動,用以指明要執行的活動(activity)與動作(action)。其中包含了活動名稱、所需資料、要執行本活動的元件分類、適當的指令。activity 程式碼中的 intent 直接指明,優先於 <intent-filter>

<intent-filter>: 表示所能處理的 intent有哪些。

Icons and Labels

android:icon(圖示) 與android:label(標題) 即是其內所有元素的預設值。

Permissions

告所需的許可權,用來限制程式與資料的存取,以避免遭到誤用,而產生不良後果。每個許可權的識別碼都是唯一的。一個功能特徵只能使用一個許可權來保護它。

Libraries

當應用程式所用到的 package 位於不同的函式庫內,此時需指明所用到的函式庫。
每一個函式庫都需使用一個 <uses-library> 來單獨宣告。

主要架構 :

<?xml version="1.0" encoding="utf-8"?>
<manifest>

<!-- 0. 軟體預設值 -->

    <uses-permission /> 
   	<permission />
   	<permission-tree />
   	<permission-group />
      	<instrumentation />
   	<uses-sdk />
   	<uses-configuration /> 
   	<uses-feature />  
   	<supports-screens />  
   	<compatible-screens />  
   	<supports-gl-texture />  

	<!-- 1. Application-->
   	<application>
   	
       	<!-- 1-1. Activity -->
       	<activity>
       	    <intent-filter>
       	        <action />
       	        <category />
       	        <data />
       	    </intent-filter>
       	    <meta-data />
       	</activity>

        <activity-alias>
   	        <intent-filter> . . . </intent-filter>
       	    <meta-data />
       	</activity-alias>

       	<!-- 1-2. Service -->	
       	<service>
       	    <intent-filter> . . . </intent-filter>
           	<meta-data />
       	</service>

		<!-- 1-3. 廣播接收器 -->	
       	<receiver>
       	    <intent-filter> . . . </intent-filter>
       	    <meta-data />
       	</receiver>

		<!-- 1-4. 內容供應程式 -->
       	<provider>
           	<grant-uri-permission />
           	<meta-data />
           	<path-permission />
       	</provider>

       	<uses-library />

   	</application>

</manifest>
0. 軟體預設值
permission 同意權限功能 –>

<uses-permission>: 若應用程式要使用的功能特徵是受到許可權所保護的。

<permission>:應用程式若想要自訂許可權來保護內部元件。

<permission-tree>:幫一組許可權宣告一個 namespace 並定義在程式碼中。

<permission-group>:宣告群組名稱,然後在 元素的屬性 permissionGroup 指定群組名稱,以便將數個許可權歸納在同一群組。

硬體宣告 –>

<uses-feature>: 運用硬體或軟體功能時所做的宣告:Blueteeth, camera…

1. Application 應用程式
1-1. Activity 活動

<activity>:實作應用程式有畫面呈現的功能,沒聲明將不會被運行。

<activity-alias>:android里為了重複使用Activity而設計的。由於它是 的別名,因此必須跟在該元素的後面

1-2. Service 服務

<service>:實作應用程式長時間後台運行,沒聲明將不會被運行。

1-3. receiver 廣播接收器

<receiver>:能夠接收由所述系統或其它應用程序的廣播。

1-4. provider 內容供應程式

<provider>:能夠提供由所述系統或其它應用程序的廣播。


[ 延伸閱讀 標籤字典 ]

參考來源
  1. 灼眼のFate【Android】技巧 6 – Android 禁止屏幕旋转 & 屏幕旋转不刷新 Activity & 动态更改屏幕方向
  2. 應用程式manifest-intro | Android Developers
  3. App Manifest 介紹- Android App 學習筆記