DrawerLayoutMenu使用详解,android内存优化方案

import android.support.v7.app.AppCompatActivity;

import android.support.v7.widget.Toolbar;

import android.view.Display;

import android.view.MenuItem;

import android.view.MotionEvent;

import android.view.View;

import android.view.WindowManager;

public class MainActivity extends AppCompatActivity

implements NavigationView.OnNavigationItemSelectedListener {

private CoordinatorLayout right;

private NavigationView left;

private boolean isDrawer=false;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);

setSupportActionBar(toolbar);

FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);

fab.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View view) {

Snackbar.make(view, “Replace with your own action”, Snackbar.LENGTH_LONG)

.setAction(“Action”, null).show();

}

});

DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);

right = (CoordinatorLayout) findViewById(R.id.right);

left = (NavigationView) findViewById(R.id.nav_view);

ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(

this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);

drawer.setDrawerListener(toggle);

toggle.syncState();

NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);

navigationView.setNavigationItemSelectedListener(this);

right.setOnTouchListener(new View.OnTouchListener() {

@Override

public boolean onTouch(View view, MotionEvent motionEvent) {

if(isDrawer){

return left.dispatchTouchEvent(motionEvent);

}else{

return false;

}

}

});

drawer.setDrawerListener(new DrawerLayout.DrawerListener() {

@Override

public void onDrawerSlide(View drawerView, float slideOffset) {

isDrawer=true;

//获取屏幕的宽高

WindowManager manager = (WindowManager) getSystemService(Context.WINDOW_SERVICE);

Display display = manager.getDefaultDisplay();

//设置右面的布局位置 根据左面菜单的right作为右面布局的left 左面的right+屏幕的宽度(或者right的宽度这里是相等的)为右面布局的right

right.layout(left.getRight(), 0, left.getRight() + display.getWidth(), display.getHeight());

}

@Override

public void onDrawerOpened(View drawerView) {}

@Override

public void onDrawerClosed(View drawerView) {

isDrawer=false;

}

@Override

public void onDrawerStateChanged(int newState) {}

});

}

@Override

public void onBackPressed() {

DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);

if (drawer.isDrawerOpen(GravityCompat.START)) {

drawer.closeDrawer(GravityCompat.START);

} else {

super.onBackPressed();

}

}

@SuppressWarnings(“StatementWithEmptyBody”)

@Override

public boolean onNavigationItemSelected(MenuItem item) {

// Handle navigation view item clicks here.

int id = item.getItemId();

if (id == R.id.nav_camera) {

// Handle the camera action

} else if (id == R.id.nav_gallery) {

} else if (id == R.id.nav_slideshow) {

} else if (id == R.id.nav_manage) {

} else if (id == R.id.nav_share) {

} else if (id == R.id.nav_send) {

}

DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);

drawer.closeDrawer(GravityCompat.START);

return true;

}

}

抽屉式菜单主要由主页和侧滑菜单页面组成,以下为activity_main.xml和activity_main_drawer.xml

面试复习笔记:

这份资料我从春招开始,就会将各博客、论坛。网站上等优质的Android开发中高级面试题收集起来,然后全网寻找最优的解答方案。每一道面试题都是百分百的大厂面经真题+最优解答。包知识脉络 + 诸多细节。
节省大家在网上搜索资料的时间来学习,也可以分享给身边好友一起学习。
给文章留个小赞,就可以免费领取啦~

戳我领取:GitHub

《960页Android开发笔记》

DrawerLayoutMenu使用详解,android内存优化方案

《1307页Android开发面试宝典》

包含了腾讯、百度、小米、阿里、乐视、美团、58、猎豹、360、新浪、搜狐等一线互联网公司面试被问到的题目。熟悉本文中列出的知识点会大大增加通过前两轮技术面试的几率。

DrawerLayoutMenu使用详解,android内存优化方案

《507页Android开发相关源码解析》

只要是程序员,不管是Java还是Android,如果不去阅读源码,只看API文档,那就只是停留于皮毛,这对我们知识体系的建立和完备以及实战技术的提升都是不利的。

包含了腾讯、百度、小米、阿里、乐视、美团、58、猎豹、360、新浪、搜狐等一线互联网公司面试被问到的题目。熟悉本文中列出的知识点会大大增加通过前两轮技术面试的几率。

[外链图片转存中…(img-ZfQ5kFN4-1643787794737)]

《507页Android开发相关源码解析》

只要是程序员,不管是Java还是Android,如果不去阅读源码,只看API文档,那就只是停留于皮毛,这对我们知识体系的建立和完备以及实战技术的提升都是不利的。

真正最能锻炼能力的便是直接去阅读源码,不仅限于阅读各大系统源码,还包括各种优秀的开源库。

上一篇:GO操作数据库【学习自李文周老师博客】


下一篇:java环境异常 jdwp transport dt_socket failed to initialize transport_init(510)