日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

android browser 书签 路径,Android Browser学习七 书签历史模块: 书签UI的实现(2)

發(fā)布時間:2023/12/15 Android 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android browser 书签 路径,Android Browser学习七 书签历史模块: 书签UI的实现(2) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

由于書簽?zāi)K還是比較復雜的, 為了不讓博客變得太長, 故拆分為兩篇.

上一篇介紹了書簽大致的實現(xiàn), 本篇主要介紹

1.書簽?zāi)KBreadCrumb的實現(xiàn),

2.書簽?zāi)K與Activity之間的通訊,

3.?修改添加書簽的實現(xiàn)

開始吧:

1.書簽?zāi)KBreadCrumb的實現(xiàn),

這個東西其實就是在書簽UI和書簽添加窗口展示的那個類似windows窗口管理器的導航按鈕

點擊可以動態(tài)的調(diào)整書簽的層級, 效果還是蠻不錯的,在很多文件管理器中也有用到.

可以認為是一個自定義view (應(yīng)該是一個viewgroup)了:

類圖差不多是這樣:可以看到有兩個地方使用到了這個東西, 也就是上面截圖的 書簽UI和添加書簽UI,

使用這個東西需要注冊一個通知, 這樣在用戶點擊BreadCrumbView的時候會回調(diào)到他們進行調(diào)整目錄.

BreadCrumbView 是一個LinearLayout, 所以他里面有一個List 集合, Crumb里面有個view 我們看到的一連串的按鈕實際上是CrumbView添加的每一個Crumb.

在BookMarkExpandableView中通過getGroupView調(diào)用到getBreadCrumbView添加每一個crumb按鈕

在AddBookMarkPage 則是在View的布局中有這個View:

mCrumbs = (BreadCrumbView) findViewById(R.id.crumbs);

BreadCrumbView的添加標簽按鈕和分割線的操作:

private void pushCrumb(Crumb crumb) {

if (mCrumbs.size() > 0) {

addSeparator();//左邊添加一個分割線

}

mCrumbs.add(crumb);

addView(crumb.crumbView);

updateVisible();

crumb.crumbView.setOnClickListener(this);

}

private void addSeparator() {

View sep = makeDividerView();

sep.setLayoutParams(makeDividerLayoutParams());

addView(sep);

}

private ImageView makeDividerView() {

ImageView result = new ImageView(mContext);

result.setImageDrawable(mSeparatorDrawable);

result.setScaleType(ImageView.ScaleType.FIT_XY);

return result;

}

其他的就是數(shù)據(jù)庫操作了, 暫時不去研究.

2.書簽?zāi)K與ComboViewActivity之間的通訊,

在使用Fragment的時候我們經(jīng)常會需要fragment和activity的相互通訊, activity通知fragment比較簡單, 因為fragment是activity的組成部分, 那么我們通過書簽?zāi)K, 谷歌是怎么實現(xiàn)Fragment通知到Activity的:

其實就是

mCallbacks = new CombinedBookmarksCallbackWrapper(

(CombinedBookmarksCallbacks) getActivity());

真的不知道為什么要這么設(shè)計, 個人認為Activity繼承一個接口, 直接cast getActivity就可以了.不清楚這個CombinedBookmarksCallbackWrapper有什么用?

3.?修改添加書簽的實現(xiàn)

AddBookMarkPage其實有兩個功能 添加書簽和編輯書簽,看部分onCreate的代碼就知道了:

@Override

protected void onCreate(Bundle icicle) {

super.onCreate(icicle);

requestWindowFeature(Window.FEATURE_NO_TITLE);

mMap = getIntent().getExtras();

setContentView(R.layout.browser_add_bookmark);

Window window = getWindow();

String title = null;

String url = null;

mFakeTitle = (TextView) findViewById(R.id.fake_title);

if (mMap != null) {

Bundle b = mMap.getBundle(EXTRA_EDIT_BOOKMARK);

if (b != null) {

mEditingFolder = mMap.getBoolean(EXTRA_IS_FOLDER, false);

mMap = b;

mEditingExisting = true;

mFakeTitle.setText(R.string.edit_bookmark);

if (mEditingFolder) {

findViewById(R.id.row_address).setVisibility(View.GONE);

} else {

showRemoveButton();

}

} else {

int gravity = mMap.getInt("gravity", -1);

if (gravity != -1) {

WindowManager.LayoutParams l = window.getAttributes();

l.gravity = gravity;

window.setAttributes(l);//不知道什么意思 這樣是設(shè)置decorview的grivity

}

}

title = mMap.getString(BrowserContract.Bookmarks.TITLE);

url = mOriginalUrl = mMap.getString(BrowserContract.Bookmarks.URL);

mTouchIconUrl = mMap.getString(TOUCH_ICON_URL);

mCurrentFolder = mMap.getLong(BrowserContract.Bookmarks.PARENT, DEFAULT_FOLDER_ID);

}

其實選擇文件夾的窗口也在這個Activity中, 打開關(guān)閉窗口是讓他們 gone 和visiable:

private void switchToFolderSelector() {

// Set the list to the top in case it is scrolled.

mListView.setSelection(0);

mDefaultView.setVisibility(View.GONE);

mFolderSelector.setVisibility(View.VISIBLE);

mCrumbHolder.setVisibility(View.VISIBLE);

mFakeTitleHolder.setVisibility(View.GONE);

mAddNewFolder.setVisibility(View.VISIBLE);

mAddSeparator.setVisibility(View.VISIBLE);

getInputMethodManager().hideSoftInputFromWindow(

mListView.getWindowToken(), 0);

}

值得注意一下empty的用法:

mListView = (CustomListView) findViewById(R.id.list);

View empty = findViewById(R.id.empty);

mListView.setEmptyView(empty);

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="vertical"

android:visibility="gone"

>

android:id="@+id/list"

android:layout_marginLeft="16dip"

android:layout_marginRight="16dip"

android:layout_width="match_parent"

android:layout_height="match_parent"

/>

android:id="@+id/empty"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:visibility="gone"

android:layout_marginLeft="16dip"

android:layout_marginTop="16dip"

android:text="@string/no_subfolders"

android:textStyle="italic"

android:textAppearance="?android:attr/textAppearanceMedium" />

而點擊操作最終是通過BreadCrumbView來通知Activity進行獲取下一級目錄:

總結(jié)

以上是生活随笔為你收集整理的android browser 书签 路径,Android Browser学习七 书签历史模块: 书签UI的实现(2)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。