Masalah atau permintaan penarikan apa pun tidak akan ditangani. Harap pertimbangkan untuk membuat versi Anda sendiri jika diperlukan perubahan.
Mengubah menu Android, tombol kembali, tutup dan periksa
Memiliki kendali penuh atas animasi:
compile ' com.balysv.materialmenu:material-menu:2.0.0 '
Lihat README untuk menyiapkan versi perpustakaan yang lebih lama.
Gunakan itu sebagai drawable mandiri di Toolbar
Anda:
private MaterialMenuDrawable materialMenu ;
protected void onCreate ( Bundle savedInstanceState ) {
super . onCreate ( savedInstanceState );
setContentView ( R . layout . toolbar );
Toolbar toolbar = ( Toolbar ) findViewById ( R . id . toolbar );
setSupportActionBar ( toolbar );
toolbar . setNavigationOnClickListener ( new View . OnClickListener () {
@ Override public void onClick ( View v ) {
// Handle your drawable state here
materialMenu . animateState ( newState );
}
});
materialMenu = new MaterialMenuDrawable ( this , Color . WHITE , Stroke . THIN );
toolbar . setNavigationIcon ( materialMenu );
}
View
lama biasa yang menggambar ikon dan menyediakan API untuk memanipulasi statusnya. Anda dapat menyematkannya di tata letak apa pun termasuk Toolbar
.
Kustomisasi juga tersedia melalui atribut xml:
app:mm_color="color" // Color of drawable
app:mm_visible="boolean" // Visible
app:mm_transformDuration="integer" // Transformation animation duration
app:mm_scale="integer" // Scale factor of drawable
app:mm_strokeWidth="integer" // Stroke width of icons (can only be 1, 2 or 3)
app:mm_rtlEnabled="boolean" // Enabled RTL layout support (flips all drawables)
app:mm_iconState="enum" // Set the intial state of the drawable (burger, arrow, x or check)
Ada empat status ikon:
BURGER , ARROW , X , CHECK
Untuk mengubah keadaan drawable
MaterialMenu . animateIconState ( IconState state )
Untuk mengubah status drawable tanpa animasi
MaterialMenu . setIconState ( IconState state )
Untuk menganimasikan sumber daya dapat digambar secara manual (yaitu pada slide panel samping navigasi):
MaterialMenu . setTransformationOffset ( AnimationState state , float value )
Untuk menyembunyikan atau menampilkan sumber daya dapat digambar:
MaterialMenu . setVisible ( boolean visible )
dimana AnimationState
adalah salah satu dari BURGER_ARROW, BURGER_X, ARROW_X, ARROW_CHECK, BURGER_CHECK, X_CHECK
dan value
antara 0
dan 2
Catatan: Status ikon ditentukan oleh nilai offset saat ini. Pastikan Anda menggunakan offset
antara 0
dan 1
untuk animasi maju dan 1
dan 2
untuk mundur guna menyimpan status ikon dengan benar pada rekreasi aktivitas.
Terapkan MaterialMenu
ke dalam ActionBar Anda seperti dijelaskan di atas dan tambahkan DrawerListener
khusus :
private DrawerLayout drawerLayout ;
private boolean isDrawerOpened ;
private MaterialMenuDrawable materialMenu ;
@ Override
protected void onCreate ( Bundle savedInstanceState ) {
super . onCreate ( savedInstanceState );
toolbar = ( Toolbar ) findViewById ( R . id . toolbar );
setSupportActionBar ( toolbar );
materialMenu = new MaterialMenuDrawable ( this , Color . WHITE , Stroke . THIN );
toolbar . setNavigationIcon ( materialMenu );
drawerLayout = ( DrawerLayout ) findViewById ( R . id . drawer_layout );
drawerLayout . setDrawerListener ( new DrawerLayout . SimpleDrawerListener () {
@ Override
public void onDrawerSlide ( View drawerView , float slideOffset ) {
materialMenu . setTransformationOffset (
MaterialMenuDrawable . AnimationState . BURGER_ARROW ,
isDrawerOpened ? 2 - slideOffset : slideOffset
);
}
@ Override
public void onDrawerOpened ( View drawerView ) {
isDrawerOpened = true ;
}
@ Override
public void onDrawerClosed ( View drawerView ) {
isDrawerOpened = false ;
}
@ Override
public void onDrawerStateChanged ( int newState ) {
if ( newState == DrawerLayout . STATE_IDLE ) {
if ( isDrawerOpened ) {
menu . setIconState ( MaterialMenuDrawable . IconState . ARROW );
} else {
menu . setIconState ( MaterialMenuDrawable . IconState . BURGER );
}
}
}
});
}
Balys Valentukevicius
Copyright 2016 Balys Valentukevicius
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.