Intereting Posts
JDBC против веб-сервиса для Android Повторное использование объекта просмотра Android – предотвращение появления старого размера, когда View reappears Я получаю сообщение об ошибке "Показать метод (FragmentManager, String)" Использование Gson и Retrofit 2 для десериализации сложных ответов API Android java.net.UnknownHostException: Хост не решен (вопрос стратегии) Как включить фонарик Android Как получить минимальные требования к оборудованию для приложения Android Проблема SQLiteOpenHelper с полным именем пути к базе данных ConnectedAndroidTest на нескольких эмуляторах Почему Android предпочитает статические классы Андроид: экспортированы не-манифестные широковещательные приемники? Unity Android Build Error WIN32 Исключение ZipAlign Как получить информацию об использовании аккумулятора Android по заявке Невозможно отключить производственное приложение в консоли разработчика Google Play в пользу бета-версии Android AlarmManager в Broadcastreceiver

Пользовательская анимация для ящика навигации открыта и закрыта

Давайте сделаем что-то, что заставило вас задуматься. Я видел эту анимацию для навигации Ящик: Введите описание изображения здесь

И я хотел бы реализовать это, поскольку это отличный эффект. Я попытался получить эффект, создав пользовательский вид, и при касании я получаю как минимум 50% эффект. Я хотел бы реализовать мои методы ondraw () и ontouch () из моего пользовательского представления в навигационное представление. Как это делается? У кого-нибудь есть ключ? Может ли кто-нибудь дать ссылку, которая имеет simlar вещи.

Я пробовал это:

public class CustomNavigation extends DrawerLayout { public CustomNavigation(Context context) { super(context); } public CustomNavigation(Context context, AttributeSet attrs) { super(context, attrs); } public CustomNavigation(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); // invalidate(); } public void start() { this.invalidate(); Log.d("Parth", "start"); } @Override public void onDraw(Canvas c) { Log.d("Parth", "ondraw"); // super.onDraw(c); } } 

Метод on draw не вызывается. Почему это так?

Из основного действия я делаю объект класса выше и вызываю метод start следующим образом:

 CustomNavigation drawer = (CustomNavigation) findViewById(R.id.drawer_layout); drawer.start(); 

И это всего лишь исходный материал, я также хочу реализовать их:

  • https://mir-s3-cdn-cf.behance.net/project_modules/disp/1637a925685965.56349328a6a5e.gif

  • https://mir-s3-cdn-cf.behance.net/project_modules/disp/092d8f25685965.5634935a53dde.gif

Solutions Collecting From Web of "Пользовательская анимация для ящика навигации открыта и закрыта"

Итак, после того, как я нашел так много, я нашел для этого библиотеку, и вот ссылка на нее. Я не знаю, почему так трудно найти. Или это была моя неудачная неделя в любом случае для тех, кто хочет ее использовать, вы найдете здесь библиотеку. И более того, я также дам реализацию, если вам это нужно:

main_activity.xml

 <?xml version="1.0" encoding="utf-8"?> <com.mxn.soul.flowingdrawer_core.LeftDrawerLayout android:id="@+id/id_drawerlayout" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:clipChildren="false" > <!--content--> <android.support.design.widget.CoordinatorLayout android:id="@+id/content" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> </android.support.design.widget.CoordinatorLayout> <!--menu--> <RelativeLayout android:layout_width="280dp" android:layout_height="match_parent" android:layout_gravity="start" android:clipChildren="false" > <com.mxn.soul.flowingdrawer_core.FlowingView android:paddingRight="35dp" android:id="@+id/sv" android:layout_width="match_parent" android:layout_height="match_parent"/> <FrameLayout android:id="@+id/id_container_menu" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_alignParentLeft="true" android:layout_marginRight="25dp" /> </RelativeLayout> </com.mxn.soul.flowingdrawer_core.LeftDrawerLayout> 

Main_activity.java

 public class MainActivity extends AppCompatActivity{ private LeftDrawerLayout mLeftDrawerLayout; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mLeftDrawerLayout = (LeftDrawerLayout) findViewById(R.id.id_drawerlayout); FragmentManager fm = getSupportFragmentManager(); MyMenuFragment mMenuFragment = (MyMenuFragment) fm.findFragmentById(R.id.id_container_menu); FlowingView mFlowingView = (FlowingView) findViewById(R.id.sv); if (mMenuFragment == null) { fm.beginTransaction().add(R.id.id_container_menu, mMenuFragment = new MyMenuFragment()).commit(); } mLeftDrawerLayout.setFluidView(mFlowingView); mLeftDrawerLayout.setMenuFragment(mMenuFragment); } } 

Теперь навигационное представление рассматривается как фрагмент, поэтому код для фрагмента находится здесь:

 public class MyMenuFragment extends MenuFragment{ @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View v = inflater.inflate(R.layout.fragment,container,false); return setupReveal(v); } } 

Так что это в значительной степени. Вы можете поблагодарить этого человека за прекрасную работу.

Фляжная анимация

Вы можете получить помощь от этой ССЫЛКИ

Введите описание изображения здесь Введите описание изображения здесь

Видео-пример этой библиотеки находится на этом видео с YouTube.

Демо-приложение можно найти в магазине воспроизведения.