多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > php開源 > 綜合技術 > Drawer Arrow Drawable(meun-icon-to-back-arrow)使用,仿知乎菜單欄界面

Drawer Arrow Drawable(meun-icon-to-back-arrow)使用,仿知乎菜單欄界面

來源:程序員人生   發布時間:2015-06-01 09:05:18 閱讀次數:7651次

Drawer Arrow Drawable(meun-icon-to-back-arrow)使用,仿知乎菜單欄界面

1、甚么是Drawer Arrow Drawable

Drawer Arrow Drawable 其實就是1個抽屜側滑菜單欄,只不過加入了很酷炫的meun-icon-to-back-arrow動畫效果,以下圖所示



2、Drawer Arrow Drawable的實現原理

設計方法:

我的想法是:如果我能生成每條線末真個移動曲線,我就可以隨抽屜(drawer)的滑動,根據參數t簡單地計算出每條路徑(path)上的點,
然后只需從curveA上的點M向curveB上的N繪制1條直線便可。

為了生成這些曲線,我需要1個合適取用的點的集合案例。我首先想到我應當在打開抽屜的時候,從我的裝備上錄制視頻,分成N幀。但是我突然
想到:抽屜滑動時的插值器會使得這些幀不能均勻散布。不用太復雜,我只是粗略地移動抽屜,然后對每步截屏。

 

這兒,我把所有的圖象放在Adobe Illustrator上,并用1條向量追蹤1條線(方便縮放:6pt等于6px),這是1個勞動密集型的進程,
充滿了大量的毛病;畢竟,6個像素加抗鋸齒是1種低精度,相對要使用到的數學方法


3、Drawer arrow Drawable的使用

package com.example.ldrawertest; import com.example.ldrawerlibrary.ActionBarDrawerToggle; import com.example.ldrawerlibrary.DrawerArrowDrawable; import android.annotation.SuppressLint; import android.app.ActionBar; import android.app.Activity; import android.content.Intent; import android.content.res.Configuration; import android.net.Uri; import android.os.Bundle; import android.support.v4.widget.DrawerLayout; import android.view.MenuItem; import android.view.View; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.ListView; public class MainActivity extends Activity { private DrawerLayout mDrawerLayout; private ListView mDrawerList; private ActionBarDrawerToggle mDrawerToggle; private DrawerArrowDrawable drawerArrow; private boolean drawerArrowColor; @SuppressLint("NewApi") @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //得到1個actionbar ActionBar ab = getActionBar(); // 給左上角圖標的左側加上1個返回的圖標 ab.setDisplayHomeAsUpEnabled(true); //必須通過調用setHomeButtonEnabled(true)方法確保這個圖標能夠作為1個操作項 ab.setHomeButtonEnabled(true); mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); //抽屜側欄的布局,為1個listView mDrawerList = (ListView) findViewById(R.id.navdrawer); //創建DrawerArrow drawerArrow = new DrawerArrowDrawable(this) { @Override public boolean isLayoutRtl() { return false; } }; /* * ActionBarDrawerToggle 是 DrawerLayout.DrawerListener實現。 和 NavigationDrawer 搭配使用,推薦用這個方法,符合Android design規范。 作用: 1.改變android.R.id.home返回圖標。 2.Drawer拉出、隱藏,帶有android.R.id.home動畫效果。 3.監聽Drawer拉出、隱藏; */ //動作條抽屜切換器將抽屜與app icon動作條綁定正確交互。 mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, drawerArrow, R.string.drawer_open, R.string.drawer_close) { //當抽屜關閉時 public void onDrawerClosed(View view) { super.onDrawerClosed(view); /* * getActivity().invalidateOptionsMenu(); * 在運行時改變menu item的狀態。你需要重寫onPrepareOptionsMenu() , * 它方便你對item移除,添加,使不可用等。在android 3.0以上, * 你必須調用invalidateOptionsMenu() 。 * */ invalidateOptionsMenu(); } //當抽屜打開時 public void onDrawerOpened(View drawerView) { super.onDrawerOpened(drawerView); invalidateOptionsMenu(); } }; //設置監聽drawer切換 mDrawerLayout.setDrawerListener(mDrawerToggle); //該方法會自動和actionBar關聯, 將開關的圖片顯示在了action上,如果不設置,也能夠有抽屜的效果,不過是默許的圖標 mDrawerToggle.syncState(); //設置LDrawer填充內容,通過Adapter填充 String[] values = new String[]{ " 用戶名", " 發現", " 關注", " 收藏", " 草稿", " 發問", " 設置" }; ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, android.R.id.text1, values); mDrawerList.setAdapter(adapter); //抽屜側欄設置點擊事件 mDrawerList.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { switch (position) { case 0: mDrawerToggle.setAnimateEnabled(false);//設置停止或開啟動畫 drawerArrow.setProgress(1f);//設置普通菜單圖標模式 break; case 1: mDrawerToggle.setAnimateEnabled(false); drawerArrow.setProgress(0f);//設置返回箭頭模式 break; case 2: mDrawerToggle.setAnimateEnabled(true); mDrawerToggle.syncState(); break; case 3: if (drawerArrowColor) { drawerArrowColor = false; // drawerArrow.setColor(R.color.ldrawer_color);//設置色彩 } else { drawerArrowColor = true; // drawerArrow.setColor(R.color.drawer_arrow_second_color); } mDrawerToggle.syncState(); break; case 4: Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://github.com/IkiMuhendis/LDrawer")); startActivity(browserIntent); break; case 5: Intent share = new Intent(Intent.ACTION_SEND); share.setType("text/plain"); share.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); share.putExtra(Intent.EXTRA_SUBJECT, getString(R.string.app_name)); share.putExtra(Intent.EXTRA_TEXT, getString(R.string.app_description) + " " + "GitHub Page : https://github.com/IkiMuhendis/LDrawer " + "Sample App : https://play.google.com/store/apps/details?id=" + getPackageName()); startActivity(Intent.createChooser(share, getString(R.string.app_name))); break; case 6: String appUrl = "https://play.google.com/store/apps/details?id=" + getPackageName(); Intent rateIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(appUrl)); startActivity(rateIntent); break; } } }); } //菜單鍵點的事件處理 @Override public boolean onOptionsItemSelected(MenuItem item) { if (item.getItemId() == android.R.id.home) { if (mDrawerLayout.isDrawerOpen(mDrawerList)) { mDrawerLayout.closeDrawer(mDrawerList); } else { mDrawerLayout.openDrawer(mDrawerList); } } return super.onOptionsItemSelected(item); } //activity創完成后 @Override protected void onPostCreate(Bundle savedInstanceState) { super.onPostCreate(savedInstanceState); mDrawerToggle.syncState(); } //配置改變時 @Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); mDrawerToggle.onConfigurationChanged(newConfig); } }



生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 三级c欧美做人爱视频 | 久久精品综合一区二区三区 | 欧美性黑人极品 hd 欧美性黑人极品hd 欧美性活生活视频 | 亚洲人人爱 | 亚洲欧美综合图片 | 最近中文字幕mv手机免费高清 | 国产精品久久一区 | 亚洲第一网站在线观看 | 欧美成人免费网在线观看 | 国产福利精品在线 | 亚洲精品久久久久久久久久久网站 | 啪啪色视频 | 自拍自录videosfree自拍自录 | 国产精品日韩欧美久久综合 | 日韩精品大片 | 酒色成人网 | 久久国产大片 | 伊人成伊人成综合网2222 | 亚洲国产精品久久精品成人 | 欧美猛交| 看片福利| 国产成人一级 | 国产成人免费视频精品一区二区 | 激情视频在线观看 | 国产欧美二区 | 午夜免费啪在线观看视频网站 | 青青草原亚洲视频 | 亚洲国产99在线精品一区二区 | 成年人网站在线观看视频 | 亚洲女人被黑人巨大进入 | 亚洲高清视频免费 | 欧美特级一级毛片 | 在线精品视频成人网 | 最近中文字幕免费mv视频8 | 性性影院在线观看 | 在线观看免费精品国自产 | 一级空姐毛片 | 国产精品视频流白浆免费视频 | 欧美日韩大尺码免费专区 | 在线视频亚洲欧美 | 中文字幕 亚洲 一区二区三区 |