我們有不同的userinterfaces,這是建設成爲碎片,例如MenuFragment:
public class MenuFragment extends Fragment implements Hideable, View.OnClickListener {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
this.view = inflater.inflate(R.layout.menu, container, false);
}
@Override
public void hide() {
view.setVisibility(View.GONE);
}
@Override
public void show() {
view.setVisibility(View.VISIBLE);
}
}
可隱藏的:
public static interface Hideable {
void hide();
void show();
}
國家是枚舉:
public enum InterfaceState {
STANDARD, TWO, THREE ;
private List<Hideable> visibleElements;
private void setVisibleElements(Hideable[] visibleElements) {
this.visibleElements = Arrays.asList(visibleElements);
}
}
使用它們設置:
InterfaceState.STANDARD.setVisibleElements(new Hideable[] { menuFragment });
其中menuFragment是
menuFragment = (MenuFragment) activity.getFragmentManager().findFragmentById(R.id.menu_fragment);
現在我改變狀態調用changeToState:
public void changeToState(InterfaceState state) {
List<Hideable> hideList = new LinkedList<>();
for (Hideable e : this.currentState.visibleElements) {
if (!state.visibleElements.contains(e))
hideList.add(e);
e.hide();
}
List<Hideable> showList = new LinkedList<>();
for (Hideable e : state.visibleElements) {
if (!this.currentState.visibleElements.contains(e))
showList.add(e);
e.show();
}
系統似乎是馬車。有時UI元素不會出現。
問題:
- 這是實現一個UI的好方法?如果不是,那麼更好的方法是什麼?
- Android是否爲可視性=「GONE」的視圖分配空間?要使用上層機制,我需要直接在應用程序啓動時定義所有UI元素(如MenuFragment menuFragment)。
- 任何建議/改進?
感謝所有讀者。
你能給我更多關於你的第一點的信息嗎?我在哪裏可以找到文學? – kaynow 2014-10-29 10:34:56
@kaynow看到我更新的答案 – Squeazer 2014-10-29 11:37:50