導航:首頁 > 操作系統 > android層級

android層級

發布時間:2022-04-18 05:42:36

android打造任意層級的樹形控制項那個id能不能用string

由於整體比較長,我決定首先帶大家看一下用法,就是如果學完了這篇博客,我們需要樹形控制項,我們需要花多少精力去完成~~
現在需求來了:我現在需要展示一個文件管理系統的樹形結構:
數據是這樣的:

//id , pid , label , 其他屬性
mDatas.add(new FileBean(1, 0, "文件管理系統"));
mDatas.add(new FileBean(2, 1, "游戲"));
mDatas.add(new FileBean(3, 1, "文檔"));
mDatas.add(new FileBean(4, 1, "程序"));
mDatas.add(new FileBean(5, 2, "war3"));
mDatas.add(new FileBean(6, 2, "刀塔傳奇"));

mDatas.add(new FileBean(7, 4, "面向對象"));
mDatas.add(new FileBean(8, 4, "非面向對象"));

mDatas.add(new FileBean(9, 7, "C++"));
mDatas.add(new FileBean(10, 7, "java"));
mDatas.add(new FileBean(11, 7, "Javascript"));
mDatas.add(new FileBean(12, 8, "C"));

當然了,bean可以有很多屬性,我們提供你動態的設置樹節點上的顯示、以及不約束id, pid 的命名,你可以起任意喪心病狂的屬性名稱;

那麼我們如何確定呢?
看下Bean:

package com.zhy.bean;

import com.zhy.tree.bean.TreeNodeId;
import com.zhy.tree.bean.TreeNodeLabel;
import com.zhy.tree.bean.TreeNodePid;

public class FileBean
{
@TreeNodeId
private int _id;
@TreeNodePid
private int parentId;
@TreeNodeLabel
private String name;
private long length;
private String desc;

public FileBean(int _id, int parentId, String name)
{
super();
this._id = _id;
this.parentId = parentId;
this.name = name;
}

}

現在,不用說,應該也知道我們通過註解來確定的。

下面看我們如何將這數據轉化為樹
布局文件就一個listview,就補貼了,直接看Activity

package com.zhy.tree_view;

import java.util.ArrayList;
import java.util.List;

import android.app.Activity;
import android.os.Bundle;
import android.widget.ListView;

import com.zhy.bean.FileBean;
import com.zhy.tree.bean.TreeListViewAdapter;

public class MainActivity extends Activity
{
private List<FileBean> mDatas = new ArrayList<FileBean>();
private ListView mTree;
private TreeListViewAdapter mAdapter;

@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

initDatas();
mTree = (ListView) findViewById(R.id.id_tree);
try
{

mAdapter = new SimpleTreeAdapter<FileBean>(mTree, this, mDatas, 10);
mTree.setAdapter(mAdapter);
} catch (IllegalAccessException e)
{
e.printStackTrace();
}

}

private void initDatas()
{

// id , pid , label , 其他屬性
mDatas.add(new FileBean(1, 0, "文件管理系統"));
mDatas.add(new FileBean(2, 1, "游戲"));
mDatas.add(new FileBean(3, 1, "文檔"));
mDatas.add(new FileBean(4, 1, "程序"));
mDatas.add(new FileBean(5, 2, "war3"));
mDatas.add(new FileBean(6, 2, "刀塔傳奇"));

mDatas.add(new FileBean(7, 4, "面向對象"));
mDatas.add(new FileBean(8, 4, "非面向對象"));

mDatas.add(new FileBean(9, 7, "C++"));
mDatas.add(new FileBean(10, 7, "JAVA"));
mDatas.add(new FileBean(11, 7, "Javascript"));
mDatas.add(new FileBean(12, 8, "C"));

}

}

Activity裡面並沒有什麼特殊的代碼,拿到listview,傳入mData,當中初始化了一個Adapter;

看來我們的核心代碼都在我們的Adapter裡面:
那麼看一眼我們的Adapter

package com.zhy.tree_view;

import java.util.List;

import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;

import com.zhy.tree.bean.Node;
import com.zhy.tree.bean.TreeListViewAdapter;

public class SimpleTreeAdapter<T> extends TreeListViewAdapter<T>
{

public SimpleTreeAdapter(ListView mTree, Context context, List<T> datas,
int defaultExpandLevel) throws IllegalArgumentException,
IllegalAccessException
{
super(mTree, context, datas, defaultExpandLevel);
}

@Override
public View getConvertView(Node node , int position, View convertView, ViewGroup parent)
{

ViewHolder viewHolder = null;
if (convertView == null)
{
convertView = mInflater.inflate(R.layout.list_item, parent, false);
viewHolder = new ViewHolder();
viewHolder.icon = (ImageView) convertView
.findViewById(R.id.id_treenode_icon);
viewHolder.label = (TextView) convertView
.findViewById(R.id.id_treenode_label);
convertView.setTag(viewHolder);

} else
{
viewHolder = (ViewHolder) convertView.getTag();
}

if (node.getIcon() == -1)
{
viewHolder.icon.setVisibility(View.INVISIBLE);
} else
{
viewHolder.icon.setVisibility(View.VISIBLE);
viewHolder.icon.setImageResource(node.getIcon());
}
viewHolder.label.setText(node.getName());

return convertView;
}

private final class ViewHolder
{
ImageView icon;
TextView label;
}

}

我們的SimpleTreeAdapter繼承了我們的TreeListViewAdapter ; 除此之外,代碼上只需要復寫getConvertView , 且getConvetView其實和我們平時的getView寫法一致;

公布出getConvertView 的目的是,讓用戶自己去決定Item的展示效果。其他的代碼,我已經打包成jar了,用的時候導入即可。這樣就完成了我們的樹形控制項。
也就是說用我們的樹形控制項,只需要將傳統繼承BaseAdapter改為我們的TreeListViewAdapter ,然後去實現getConvertView 就好了。

⑵ 什麼是Android界面組件(company)結構層次

摘要 Android作為一個移動設備的平台,其軟體層次結構包括了一個操作系統(OS),中間件(MiddleWare)和應用程序(Application)。

⑶ Android系統分成哪4個層次:

對的 你理解的是對的啊,這是android開發的四個層次

⑷ android fragment和activity的區別

Fragment是到Android3.0+ 以後,Android新增了Fragments,在沒有 Fragment 之前,一個屏幕只能放一個 Activity。這是一個起源時間大家要知道是什麼時候開始引入的。
.Activity 代表了一個屏幕的主體,而Fragment可以作為Activity的一個組成元素。
一個Activity可以有若干個(0或n)Fragment構成。你可以把Fragment想像成Activity中的一個控制項,只不過相對於一般控制項,Fragment與Activity聯系更為緊密,隨著Activity的生命周期變化,Fragment也隨之相應不同的生命周期函數。
Fragment 從功能上講相當於一個子活動(Activity),它可以讓多個活動放到同一個屏幕上,也就是對用戶界面和功能的重用,因為對於大屏設備來說,純粹的 Activity 有些力不從心。
Fragment 像是一個子活動,但是 Fragment 不是 Activity 的擴展,因為 Fragment 擴展自 android.app 中的 Object,而 Activity 是 Context 的子類。Fragment 有自己的視圖層級結構,有自己的活動周期,還可以像活動一樣響應後退按鈕,Fragment 還有一個用作其初始化參數的包(Bundle),類似 Activity,Fragment 也可由系統自動保存並在以後還原。當系統還原 Fragment 時,它調用默認的構造函數(沒有參數),然後將此Bundle還原到新創建的 Fragment 中,所以無論新建還是還原 Fragment,都要經過兩個步驟:(1)調用默認構造函數(2)傳入新的或者保存起來的Bundle。
一個Activity可以運行多個 Fragment,Fragment 切換時,由 FragmentTransaction 執行,切換時,上一個 Fragment 可以保存在後退棧中(Back Stack),這里的後退棧由 FragmentManager 來管理,注意 Fragment 和 Activity 的後退棧是有區別的:Activity 的後退棧由系統管理,而 Fragment 的後退棧由所在的Activity 管理。
Fragment不能脫離Activity而存在,只有Activity才能作為接收intent的載體。其實兩者基本上是載體和組成元素的關系。
Fragment用來描述一些行為或一部分用戶界面在一個Activity中,你可以合並多個fragment在一個單獨的activity中建立多個UI面板,同時重用fragment在多個activity中.你可以認為fragment作為一個activity中的一節模塊,fragment有自己的生命周期,接收自己的輸入事件,你可以添加或移除從運行中的activity.一個fragment必須總是嵌入在一個activity中,同時fragment的生命周期受activity而影響,舉個例子吧,當activity暫停,那麼所有在這個activity的fragments將被destroy釋放。然而當一個activity在運行比如resume時,你可以單獨的操控每個fragment,比如添加或刪除。不過因為Fragment和Activity的生命周期都比較復雜,我們分別對比下:創建一個fragment你必須創建一個Fragment的子類或存在的子類,比如類似下面的代碼
public static class AndroidFragment extends Fragment{
@Override
public View onCreateView(LayoutInflaterinflater, ViewGroup container,
Bundle savedInstanceState) {
return inflater.inflate(R.layout.android_fragment,container, false);
}
}

Fragment類的一些代碼看起來有些像Activity為了讓大家了解清楚,Android開發網給大家整理下 Fragment的生命周期大家可以參考一下網上關於生命周期的介紹 http://www.cnblogs.com/purediy/p/3276545.html,部分類似Activity的,我們詳細解釋
onCreate()
當fragment創建時被調用,你應該初始化一些實用的組件,比如在fragment暫停或停止時需要恢復的
onCreateView()
當系統調用fragment在首次繪制用戶界面時,如果畫一個UI在你的fragment你必須返回一個View當然了你可以返回null代表這個fragment沒有UI.
那麼如何添加一個Fragment到Activity中呢? Activity的布局可以這樣寫
<?xml version="1.0"encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent">
<fragment android:name="com.android.cwj.ArticleListFragment"
android:id="@+id/list"
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="match_parent" />
<fragment android:name="com.android.cwj.ArticleReaderFragment"
android:id="@+id/viewer"
android:layout_weight="2"
android:layout_width="0dp"
android:layout_height="match_parent" />
</LinearLayout>

⑸ 聽說蘋果比安卓快是因為響應層級不同。那請問安卓的響應層級順序是什麼

是的,樓主你說的沒錯。Android系統的優先順序響應層級則是Application--Framework--Library--Kernal架構。相比起蘋果第三道第三層才能到屏幕上反應,所以在流暢度上蘋果確實勝過安卓

⑹ Android的許可權都有哪些

(一)linux文件系統上的許可權
-rwxr-x--x system system 4156 2010-04-30 16:13 test.apk
代表的是相應的用戶/用戶組及其他人對此文件的訪問許可權,與此文件運行起來具有的許可權完全不相關。
比如上面的例子只能說明system用戶擁有對此文件的讀寫執行許可權;system組的用戶對此文件擁有讀、執行許可權;其他人對此文件只具有執行許可權。
而test.apk運行起來後可以干哪些事情,跟這個就不相關了。
千萬不要看apk文件系統上屬於system/system用戶及用戶組,或者root/root用戶及用戶組,就認為apk具有system或root許可權
(二)Android的許可權規則
(1)Android中的apk必須簽名
這種簽名不是基於權威證書的,不會決定某個應用允不允許安裝,而是一種自簽名證書。
重要的是,android系統有的許可權是基於簽名的。比如:system等級的許可權有專門對應的簽名,簽名不對,許可權也就獲取不到。
默認生成的APK文件是debug簽名的。
獲取system許可權時用到的簽名,見:如何使Android應用程序獲取系統許可權
(2)基於UserID的進程級別的安全機制
大家都知道,進程有獨立的地址空間,進程與進程間默認是不能互相訪問的,是一種很可靠的保護機制。
Android通過為每一個安裝在設備上的包(apk)分配唯一的linux userID來實現,名稱為"app_"加一個數字,比如app_43
不同的UserID,運行在不同的進程,所以apk之間默認便不能相互訪問。
Android提供了如下的一種機制,可以使兩個apk打破前面講的這種壁壘。
在AndroidManifest.xml中利用sharedUserId屬性給不同的package分配相同的userID,通過這樣做,兩個package可以被當做同一個程序,
系統會分配給兩個程序相同的UserID。當然,基於安全考慮,兩個package需要有相同的簽名,否則沒有驗證也就沒有意義了。
(這里補充一點:並不是說分配了同樣的UserID,兩程序就運行在同一進程, 下面為PS指令摘取的,
顯然,system、app_2分別對應的兩個進程的PID都不同,不知Android到底是怎樣實現它的機制的)
User PID PPID
system 953 883 187340 55052 ffffffff afe0cbcc S system_server
app_2 1072 883 100264 19564 ffffffff afe0dcc4 S com.android.inputmethod.
system 1083 883 111808 23192 ffffffff afe0dcc4 S android.process.omsservi
app_2 1088 883 156464 45720 ffffffff afe0dcc4 S android.process.acore
(3)默認apk生成的數據對外是不可見的
實現方法是:Android會為程序存儲的數據分配該程序的UserID。
藉助於Linux嚴格的文件系統訪問許可權,便實現了apk之間不能相互訪問似有數據的機制。
例:我的應用創建的一個文件,默認許可權如下,可以看到只有UserID為app_21的程序才能讀寫該文件。
-rw------- app_21 app_21 87650 2000-01-01 09:48 test.txt
如何對外開放?
<1> 使用MODE_WORLD_READABLE and/or MODE_WORLD_WRITEABLE 標記。
When creating a new file with getSharedPreferences(String, int), openFileOutput(String, int), or openOrCreateDatabase(String, int, SQLiteDatabase.CursorFactory), you can use the MODE_WORLD_READABLE and/or MODE_WORLD_WRITEABLE flags to allow any other package to read/write the file. When setting these flags, the file is still owned by your application, but its global read and/or write permissions have been set appropriately so any other application can see it.
(4)AndroidManifest.xml中的顯式許可權聲明
Android默認應用是沒有任何許可權去操作其他應用或系統相關特性的,應用在進行某些操作時都需要顯式地去申請相應的許可權。
一般以下動作時都需要申請相應的許可權:
A particular permission may be enforced at a number of places ring your program's operation:
At the time of a call into the system, to prevent an application from executing certain functions.
When starting an activity, to prevent applications from launching activities of other applications.
Both sending and receiving broadcasts, to control who can receive your broadcast or who can send a broadcast to you.
When accessing and operating on a content provider.
Binding or starting a service.
在應用安裝的時候,package installer會檢測該應用請求的許可權,根據該應用的簽名或者提示用戶來分配相應的許可權。
在程序運行期間是不檢測許可權的。如果安裝時許可權獲取失敗,那執行就會出錯,不會提示用戶許可權不夠。
大多數情況下,許可權不足導致的失敗會引發一個 SecurityException, 會在系統log(system log)中有相關記錄。
(5)許可權繼承/UserID繼承
當我們遇到apk許可權不足時,我們有時會考慮寫一個linux程序,然後由apk調用它去完成某個它沒有許可權完成的事情,很遺憾,這種方法是行不通的。
前面講過,android許可權是經營在進程層面的,也就是說一個apk應用啟動的子進程的許可權不可能超越其父進程的許可權(即apk的許可權),
即使單獨運行某個應用有許可權做某事,但如果它是由一個apk調用的,那許可權就會被限制。
實際上,android是通過給子進程分配父進程的UserID實現這一機制的。
(三)常見許可權不足問題分析
首先要知道,普通apk程序是運行在非root、非system層級的,也就是說看要訪問的文件的許可權時,看的是最後三位。
另外,通過system/app安裝的apk的許可權一般比直接安裝或adb install安裝的apk的許可權要高一些。
言歸正傳,運行一個android應用程序過程中遇到許可權不足,一般分為兩種情況:
(1)Log中可明顯看到許可權不足的提示。
此種情況一般是AndroidManifest.xml中缺少相應的許可權設置,好好查找一番許可權列表,應該就可解決,是最易處理的情況。
有時許可權都加上了,但還是報許可權不足,是什麼情況呢?
Android系統有一些API及許可權是需要apk具有一定的等級才能運行的。
比如 SystemClock.setCurrentTimeMillis()修改系統時間,WRITE_SECURE_SETTINGS許可權好像都是需要有system級的許可權才行。
也就是說UserID是system.
(2)Log里沒有報許可權不足,而是一些其他Exception的提示,這也有可能是許可權不足造成的。
比如:我們常會想讀/寫一個配置文件或其他一些不是自己創建的文件,常會報java.io.FileNotFoundException錯誤。
系統認為比較重要的文件一般許可權設置的也會比較嚴格,特別是一些很重要的(配置)文件或目錄。

-r--r----- bluetooth bluetooth 935 2010-07-09 20:21 dbus.conf
drwxrwx--x system system 2010-07-07 02:05 data
dbus.conf好像是藍牙的配置文件,從許可權上來看,根本就不可能改動,非bluetooth用戶連讀的權利都沒有。
/data目錄下存的是所有程序的私有數據,默認情況下android是不允許普通apk訪問/data目錄下內容的,通過data目錄的許可權設置可知,其他用戶沒有讀的許可權。
所以adb普通許可權下在data目錄下敲ls命令,會得到opendir failed, Permission denied的錯誤,通過代碼file.listfiles()也無法獲得data目錄下的內容。

⑺ android如何動態改變控制項的層級(疊放層次)

在左邊圖的基礎上增加如右圖控制項b的控制項c,然後控制控制項c的顯示與隱藏

⑻ android開發程序中 dialog與ProgressDialog 的層級問題

說的我根本不能理解。。。。。能發一下代碼嗎

⑼ 對比目前主流的三大移動平台android,ios,wp的區別和優缺點

iOS,Android,WindowsPhone是現在移動互聯網上面主流的三個平台了,我也都分別參與過這三個平台的設計。在設計的過程中,因為這三個平台的不同特性,往往要角色切換,不斷的換位思維。 可能新手和外行人覺得iOS和Android沒什麼區別,有的甚至拿Android直接照抄iOS設計就可以了。還有一些人可能對WindowsPhone平台一直覺得魔幻無比,但就是找不到應該如何下手。今天我總結了一下這三個平台之間交互設計上的差異性,在開展交互設計的過程中,必須要注意的問題: 一、布局形式的差異 iOS經典的“tab bar” 在iOS應用內如果要切換不同的模塊,或者頁面內要切換不同的欄目,往往都會用到“tab bar”這一形式的控制項。這個經典設計從iOS早期沿用至今, 大部分iOS應用都是這樣設計的。當然,ios本身是很包容的,最近也很流行抽屜式導航。但是tab bar一直是最受歡迎也最好被用戶認知的方式: Android提供了2種視圖控制方式 在Android4.0規范出來之後,Android提出了2種視圖控制方式,一種是直接在導航欄的標題下加入一個觸控按鈕,點擊後會彈出切換欄目的菜單 (圖中2標注的位置) (比如日歷應用點擊後可以切換不同的視圖) 另外一種是直接在導航欄的下面加入了一個視圖控制欄,和iOS的tab bar很像,不過是僅放在了上面,而且提倡支持手勢滑動切換: (圖中2標注位置) WindowsPhone的創新 WindowsPhone與上面兩個平台就差距很大了,因為WindowsPhone獨特的MetroUI提倡回歸傳統的閱讀體驗,像瀏覽報紙和雜志一樣瀏覽手機上的內容,更關注與內容而不是修飾。所以WindowsPhone整體都給人一種像在看雜志的感覺。 WindowsPhone的視圖控制通過一種叫做“全景視圖”的方式 實際上,4個視圖的內容是在一個頁面上的,而且是一個頁面同時載入的。用戶的手機默認只顯示第一屏的內容,通過滑動把後面的內容拉出來~ 這種視圖方式很創新,而且方便閱讀,不得不說瀏覽的體驗好了很多。但是需要注意的是: 1)因為其實這3個欄目是同一頁面視圖,所以不要將內容放的過多,否則載入會很慢影響效率; 2)對交互設計過程中的排版和視覺提出了很高的要求;(你得提前想好怎麼布局好看了) 另外,WindowsPhone還提供了一種叫做樞軸的方式,樞軸和iOS的tab bar相差不是很大,只不過完全是通過滑動來切換欄目的: (樞軸布局) 二、導航邏輯的差異 大家都知道iOS是沒有實體返回按鍵的,所有返回都是通過導航欄的back按鈕來完成。 在iOS的導航邏輯中,我們可以明顯的看出來,整個程序是一頁一頁的切換,就像一個幻燈片。而返回按鈕也就是切換到上一頁。所以,iOS的返回控制的是頁面。 但是Android和WindowsPhone就不是這樣了,Android和WindowsPhone是有物理返回按鈕的,點擊物理返回按鈕,控制的不光是一個頁面,而且包括了上一步的操作,比如說: 進入頁面A,點擊文本框彈出鍵盤。那麼點擊返回按鍵就是 - 收起鍵盤 所以安卓和WindowsPhone的返回邏輯是按照時間流來判斷的,而不僅僅是頁面,返回按鈕控制的是動作。 需要特意提一下的是:WindowsPhone的返回邏輯不單限於應用內,還影響到應用之間。也就是說你當前正在桌面,再點擊一次back,就會進入你上一次打開的應用。 另外在Android4.0中,提出了一個向上的概念,就是導航欄標題前面的一個小箭頭,點擊這個箭頭,是回到該頁面的上一個層級: 三、應用之間聯系的差異 眾所周知,iOS是一個封閉的系統,而Android是一個開放的系統。我們可以比喻iOS每一個應用都是一個小房間,每個應用都在自己的房間里做自己的事情,互相之間不進行任何來往。 而Android則是一個大大的辦公區,每個應用雖然也有自己的工位,但是可以互相串門或者借用東西,而WindowsPhone則遵循著和iOS差不多的方式。到了iOS6的時候可以支持應用直接互相跳轉了,但那也僅限於你跳出去了,就不再回來了,也就是說到了那個房間你就是那個房間的人了,與之前的房間沒有關聯了。 這樣的差異意味著,iOS和WindowsPhone應用的許可權變得很低,身為應用的你既不能修改系統的一些屬性(除非越獄了),也不能修改其他應用的內容。而Android的一款應用不但可以控制系統的一些操作,還可以控制其他應用執行某些特定的操作。 這種差異會讓安卓上的應用設計有了更多的可能,身為設計師的你可以根據這一特性設計很多不錯的功能,比如系統美化或者系統優化,殺毒,攔截電話等功能,而iOS和WindowsPhone就不能。 但是這也讓Android系統面臨了很嚴峻的安全問題,所以安卓上各種優化和殺毒軟體很流行。 四、多任務的差異 多任務的差異用一句話來形容就是:iOS和WindowsPhone都是假的多任務,而Android是真的多任務。 如果你設計的應用有下載,那麼iOS和WindowsPhone切換到後台下載就被暫停了,而Android不但不會暫停,你還可以設計一些偷偷在後台運行的功能! 五、解析度的差異 親,你知道Android現在有多少種解析度嗎? 適配一直是Android很頭痛的問題,身為前端往往要為不同的解析度調效果而保證界面不會變形和模糊。而解析度問題不僅僅影響視覺這一塊,對交互設計也有很大的影響。因為這些手機往往屏幕比例也是不同的,你需要考慮不同的長寬比下,你的界面布局應該是怎樣的。 所以在設計Android的時候,你不能要求把界面布局寫死,應該盡量保證每個控制項都是浮動的,而且自己能評估出各種古怪的布局下的效果。 iOS和WindowsPhone就會好很多。iOS解析度分為320×480,640×960,640×1136,WindowsPhone解析度分為480×800,800×1280,800×1136,雖然看起來也蠻多的,但是界面的比例基本上沒有什麼變化。所以對於交互上的布局影響並不是很大,視覺設計師也可以通過腳本縮小裁圖簡單的解決問題。 六,設計風格的差異 設計風格是這3個客戶端自己獨特的個性,設計風格不單影響的是視覺設計的層面,對交互設計也非常的重要。尤其是在考慮動效,擬物化交互的時候需要重視。 iOS的設計風格偏向擬物化風格,這個擬物化不光是視覺上做出很多擬物的小按鈕小控制項的,為了配合視覺,你往往在交互上也可以加一些生動有趣的內容。 比如說像最新的path,進入商店時遮陽板會有一個收起的效果,小卡片也會根據重力感應而搖擺。如果交互上就能體現出平台的設計風格的話,無疑會非常討好用戶,增加產品細節上的亮點。 Android平台就簡單一些了,在整體的布局和交互形式和iOS差不多的情況下,盡量的簡潔,呈現一種科幻的風格即可以了。Android平台盡量少用擬物化的動效,因為Android系統對於動畫效果的渲染比較差,如果太復雜的話可能會讓界面非常的卡。 本人強烈推薦一款叫fuubo的應用,它是一款非常符合Android Holo風格又在交互上處理的很有創新的產品。 WindowsPhone平台則有著很大的不同,MetroUI的理念要求設計者更多的考慮如何展現內容,使用平滑的過渡動畫。而且還對設計者的排版和平面設計提出了一些考驗。所以建議交互設計的人好好讀讀WindowsPhone界面設計准則,並且平時就積累一些WindowsPhone界面的視覺界面感覺,不然視覺設計師很可能會埋怨你哦!~

⑽ android 怎麼計算一個view的嵌套層級

層級關系的布局有兩種解決方法:

一種方法是使用標簽的自然順序和嵌套順序來形成合理的布局。

而第一種方法卻不是萬能的,有時候我們需要將原本位於下層的元素移到另一個元素上方,那可以使用z-index;

而你說的不好用,則是zindex沒有生效,沒生效就是沒有定義position屬性,如果不想讓元素的位置有所變化,就給賦予z-index屬性的元素加上相對定位的position:relative;

閱讀全文

與android層級相關的資料

熱點內容
基於單片機的老年人健康監測系統 瀏覽:702
python入門經典pdf下載 瀏覽:13
東芝變頻2p空調壓縮機 瀏覽:223
自家wifi怎麼能加密 瀏覽:642
紅米k40加密門禁卡 瀏覽:845
什麼樣的源碼好看 瀏覽:156
手機主伺服器有什麼用 瀏覽:610
程序編寫命令 瀏覽:597
android發送心跳包 瀏覽:385
指標源碼和原理 瀏覽:700
汽車空調壓縮吸盤 瀏覽:208
崽崽因app版本不同不能邀請怎麼辦 瀏覽:686
poa演算法得到的解為全局最優解 瀏覽:926
python符號表達式 瀏覽:34
威馳壓縮機繼電器 瀏覽:871
華為手機怎麼設置移動數據app 瀏覽:959
空調壓縮機哪的廠家多 瀏覽:390
手指速演算法24加7怎麼算 瀏覽:139
如何用python寫vlookup函數 瀏覽:798
社保加密狗廠商 瀏覽:216