このプロジェクトをドリブルでチェックする
Behance でこのプロジェクトをチェックしてください
動作する実装については、 app
モジュールを参照してください。
リポジトリの最後にあるルート build.gradle に追加します。
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
依存関係を追加する
dependencies {
implementation 'com.github.Yalantis:Context-Menu.Android:1.1.4'
}
MenuObject
のリストを作成します。任意のdrawable, resource, bitmap, color
を画像として使用できます。
menuObject.drawable = ...
menuObject.setResourceValue(...)
menuObject.setBitmapValue(...)
menuObject.setColorValue(...)
画像のScaleType
を設定できます。
menuObject.scaleType = ScaleType.FIT_XY
任意のresource, drawable, color
背景として使用できます。
menuObject.setBgResourceValue(...)
menuObject.setBgDrawable(...)
menuObject.setBgColorValue(...)
メニュー タイトルのテキストの外観スタイルを簡単に追加できるようになりました。
In your project styles create style for text appearance
(For better visual effect extend it from TextView.DefaultStyle):
<style name="TextViewStyle" parent="TextView.DefaultStyle">
<item name="android:textStyle">italic|bold</item>
<item name="android:textColor">#26D0EB</item>
</style>
And set it's id to your MenuObject :
val bitmapDrawable = BitmapDrawable(
resources,
BitmapFactory.decodeResource(resources, R.drawable.icn_3)
)
val menuObject = MenuObject("Add to friends").apply {
drawable = bitmapDrawable
menuTextAppearanceStyle = R.style.TextViewStyle
}
テキストの色として任意のcolor
使用できます。
menuObject.textColor = ...
任意のcolor
区切り線の色として設定できます。
menuObject.dividerColor = ...
例:
val close = MenuObject().apply { setResourceValue(R.drawable.icn_close) }
val send = MenuObject("Send message").apply { setResourceValue(R.drawable.icn_1) }
val addFriend = MenuObject("Add to friends").apply {
drawable = BitmapDrawable(
resources,
BitmapFactory.decodeResource(resources, R.drawable.icn_3)
)
}
val menuObjects = mutableListOf<MenuObject>().apply {
add(close)
add(send)
add(addFriend)
}
MenuParams
オブジェクトを受け取ったContextMenuDialogFragment
のnewInstance
を作成します。 val menuParams = MenuParams(
actionBarSize = resources.getDimension(R.dimen.tool_bar_height).toInt(),
menuObjects = getMenuObjects(),
isClosableOutside = false
// set other settings to meet your needs
)
// If you want to change the side you need to add 'gravity' parameter,
// by default it is MenuGravity.END.
// For example:
val menuParams = MenuParams(
actionBarSize = resources.getDimension(R.dimen.tool_bar_height).toInt(),
menuObjects = getMenuObjects(),
isClosableOutside = false,
gravity = MenuGravity.START
)
val contextMenuDialogFragment = ContextMenuDialogFragment.newInstance(menuParams)
ContextMenuDialogFragment
が開きます。 override fun onCreateOptionsMenu(menu: Menu?): Boolean {
menuInflater.inflate(R.menu.menu_main, menu)
return true
}
override fun onOptionsItemSelected(item: MenuItem?): Boolean {
item?.let {
when (it.itemId) {
R.id.context_menu -> {
showContextMenuDialogFragment()
}
}
}
return super.onOptionsItemSelected(item)
}
contextMenuDialogFragment = menuItemClickListener = { view, position ->
// do something here
}
contextMenuDialogFragment = menuItemLongClickListener = { view, position ->
// do something here
}
エクスペリエンスを向上させるには、メニュー項目のサイズをActionBar
高さと同じにする必要があります。
ContextMenuDialogFragment
のnewInstance
は、次のフィールドを持つMenuParams
オブジェクトを受け取ります。
menuObjects
- MenuObject オブジェクトのリスト、
animationDelay
- フラグメントを開いてから閉じるまでの遅延 (ミリ単位)。これにより、遅いデバイスでのアニメーションがよりスムーズになります。
animationDuration
- すべてのアニメーションの継続時間 (ミリ単位)、
isClosableOutside
- ボタン以外の領域にタッチするとメニューを閉じることができる場合、
isFitSystemWindows
- true の場合、fitSystemWindows(Rect) のデフォルト実装が実行されます。
isClipToPadding
- 子をグループのパディングにクリップする場合は true、それ以外の場合は false。
最後の 2 つのパラメータは、テーマでTranslucentパラメータを使用する場合に便利です。
<item name="android:windowTranslucentStatus">true</item>
Context Menu
ステータス バーの下に置くには、 fitSystemWindows
true に、 clipToPadding
false に設定します。
menuObject.textColor
のバグが修正されましたrtl
サポートを追加しましたMenuParams
にgravity
パラメータを追加しましたsetClosableOutside
問題を修正しました。setAnimationDuration
オープン イベントに対して機能しない問題を修正しました。Usage
のブロック 5 を確認してください。ContextMenuDialogFragment
newInstance
メソッドは非推奨になりました。 MenuParams
受け取った新しいユニバーサルなものを使用します。MenuParams.setClosableOutside(boolean)
を参照してください。MenuObject
コンストラクターを変更しました。画像設定をメソッドに移動MenuObject
画像、背景、テキストの色、区切り線の色のスタイルを追加しましたOnMenuItemLongClickListener
を追加しました (使用法: OnMenuItemClickListener
と同じ、サンプル アプリを確認してください) com.yalantis.contextmenu.lib.ContextMenuDialogFragment.ItemClickListener ->
com.yalantis.contextmenu.lib.interfaces.OnMenuItemClickListener
com.yalantis.contextmenu.lib.ContextMenuDialogFragment.ItemClickListener.onItemClick(...) ->
com.yalantis.contextmenu.lib.interfaces.OnMenuItemClickListener.onMenuItemClick(...)
私たちのコンポーネントを使用しているプロジェクトへのリンクを送っていただければ、大変うれしく思います。 [email protected] に電子メールを送信してください。また、アニメーションに関してご質問やご提案がございましたら、お知らせください。
PS 私たちは、Android (iOS) の UI をさらに優れたものにする方法についてのコードとチュートリアルにラップされたさらなる機能を公開する予定です。乞うご期待!
Copyright 2019, Yalantis
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.