您的位置:首页 > 移动开发

Material Design风 第二话(CollapsingToolbarLayout+AppBarLayout+NestedScrollView)

2016-12-10 22:33 549 查看
上xml文件

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@mipmap/a">

<android.support.design.widget.CoordinatorLayout
android:layout_width="match_parent"
android:layout_height="match_parent">

<android.support.design.widget.AppBarLayout
android:id="@+id/appbar"
android:layout_width="match_parent"
android:layout_height="350dp"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">

<android.support.design.widget.CollapsingToolbarLayout
android:id="@+id/ctool"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:contentScrim="?attr/colorPrimary"
app:expandedTitleMarginEnd="20dp"
app:expandedTitleMarginStart="10dp"
app:layout_scrollFlags="scroll|exitUntilCollapsed">

<ImageView
android:id="@+id/image_title"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="centerCrop"
android:src="@mipmap/snowman"
android:transitionName="小明"
app:layout_collapseMode="parallax"
app:layout_collapseParallaxMultiplier="1" />

<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
app:layout_collapseMode="pin"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />

</android.support.design.widget.CollapsingToolbarLayout>

</android.support.design.widget.AppBarLayout>

<android.support.v4.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="500dp"
app:layout_behavior="@string/appbar_scrolling_view_behavior">

<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">

<TextView
android:id="@+id/text_blackboard"
android:layout_width="180dp"
android:layout_height="80dp"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginLeft="65dp"
android:layout_marginTop="120dp"
android:text="小签在这里"
android:textColor="@color/white"
android:textSize="18dp"
android:maxLines="3"
android:maxLength="26"
android:visibility="gone" />

<TextView
android:gravity="center"
android:id="@+id/text_show"
android:layout_width="200dp"
android:layout_height="80dp"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginLeft="60dp"
android:layout_marginTop="50dp"
android:padding="10dp"
android:maxLines="2"
android:text="欢迎来到小签\n请上滑~"
android:lineSpacingExtra="5dp"
android:textColor="@color/white"
android:textSize="22dp"
android:background="@drawable/text_selector"
android:backgroundTintMode="add"
android:elevation="20dp"
/>

<TextView
android:id="@+id/add_text"
android:layout_width="60dp"
android:layout_height="60dp"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:layout_marginRight="60dp"
android:layout_marginTop="400dp"
android:background="@mipmap/addto"
android:elevation="12dp"

/>
<TextView
android:id="@+id/check_text"
android:layout_width="60dp"
android:layout_height="55dp"
android:layout_marginLeft="60dp"
android:layout_marginTop="400dp"
android:background="@mipmap/check"
android:backgroundTintMode="add"
android:elevation="20dp" />
</RelativeLayout>

</android.support.v4.widget.NestedScrollView>
</android.support.design.widget.CoordinatorLayout>
<android.support.design.widget.NavigationView
android:id="@+id/slide_menu"
android:layout_width="200dp"
android:layout_height="match_parent"
android:layout_gravity="start"
app:menu="@menu/slide_menu"
>

</android.support.design.widget.NavigationView>
</android.support.v4.widget.DrawerLayout>




上activity

public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private CollapsingToolbarLayout collapsingToolbarLayout;
private ActionBarDrawerToggle actionBarDrawerToggle;
private DrawerLayout drawerLayout;
private ImageView imageView;
private AppBarLayout appBarLayout;
private TextView text_blakborad, text_show, text_add, text_check;
private NavigationView navigationView;
private TipModel nData;
private int from;
private final static int FROM_ADD = 1;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
getData();
initView();
setData();
}

public void getData() {
if (getIntent().getSerializableExtra("AddActivity") != null) {
nData = (TipModel) getIntent().getSerializableExtra("AddActivity");
from = FROM_ADD;
}
}

private void initView() {
navigationView = (NavigationView) findViewById(R.id.slide_menu);
imageView = (ImageView) findViewById(R.id.image_title);
collapsingToolbarLayout = (CollapsingToolbarLayout) findViewById(R.id.ctool);
text_add = (TextView) findViewById(R.id.add_text);
text_add.setOnClickListener(this);
text_check = (TextView) findViewById(R.id.check_text);
text_check.setOnClickListener(this);
text_blakborad = (TextView) findViewById(R.id.text_blackboard);
text_show = (TextView) findViewById(R.id.text_show);
appBarLayout = (AppBarLayout) findViewById(R.id.appbar);
//侧滑插入布局
View headerView = navigationView.inflateHeaderView(R.layout.navigation_header);
//修改图片

CircleImageView profile_image = (CircleImageView)headerView.findViewById(R.id.profile_image);
if (SPUtils.getInstance(this).getStringValue("image")!=null){
String path =SPUtils.getInstance(this).getStringValue("image");
Glide.with(this)
.load(path)
.into(profile_image);
}

drawerLayout = (DrawerLayout) findViewById(R.id.activity_main);

//标题栏的设置
//设置toolBar
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
toolbar.setTitle("小签");
setSupportActionBar(toolbar);
//设置返回键
//        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
//设置点击拉出侧滑
actionBarDrawerToggle = new ActionBarDrawerToggle(this,drawerLayout,toolbar,R.string.drawer_open,
R.string.drawer_close);
actionBarDrawerToggle.syncState();
drawerLayout.addDrawerListener(actionBarDrawerToggle);

//设置伸缩栏
CollapsingToolbarLayout collapsingToolbarLayout = (CollapsingToolbarLayout) findViewById(R.id.ctool);
collapsingToolbarLayout.setExpandedTitleColor(getResources().getColor(R.color.Cbbc9a));
collapsingToolbarLayout.setCollapsedTitleTextColor(Color.WHITE);

appBarLayout.addOnOffsetChangedListener(new AppBarLayout.OnOffsetChangedListener() {
@Override
public void onOffsetChanged(AppBarLayout appBarLayout, int verticalOffset) {
//到底部时会触发
if (verticalOffset == 0) {
text_show.setVisibility(View.VISIBLE);
text_blakborad.setVisibility(View.GONE);
}
if (verticalOffset > 100) {
text_show.setVisibility(View.GONE);
}
//到顶部位置附近会触发
if (Math.abs(verticalOffset) >= (appBarLayout.getTotalScrollRange() - 500)) {
Log.e("--------------", "hbbbbbbbbbb");
text_show.setVisibility(View.GONE);
text_blakborad.setVisibility(View.VISIBLE);
}
}
});
navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
switch (item.getItemId()) {
//查看判断是否输入密码
case R.id.slide_item1:
if (JudgeUtils.getIntence(getApplicationContext()).isPass()){
Intent intent = new Intent(getApplicationContext(), ScrollingActivity.class);
startActivity(intent);
finish();
}
else {
Intent intent = new Intent(getApplicationContext(), CheckActivity.class);
startActivity(intent);
finish();
}

break;
//添加
case R.id.slide_item2:
Intent intent1 = new Intent(getApplicationContext(),AddSecretActivity.class);
startActivity(intent1);
break;
//我的
case R.id.slide_item3:
Intent intent3 = new Intent(getApplicationContext(), UserCenterActivity.class);
startActivity(intent3);
finish();
break;
//关于
case R.id.slide_item4:
Intent intent2 = new Intent(getApplicationContext(),AboutActivity.class);
startActivity(intent2);
break;
default:
break;
}
return true;
}
});
}
private void setData() {
if (from ==FROM_ADD){
text_blakborad.setText(nData.getContent());
}

if (SPUtils.getInstance(this).getObject("list")==null){
ArrayList<TipModel> model = new ArrayList<TipModel>();
SPUtils.getInstance(this).putObject("list",model);
}
if (SPUtils.getInstance(this).getObject("slist")==null){
ArrayList<SecModel> smodel = new ArrayList<>();
SPUtils.getInstance(this).putObject("slist",smodel);
}
}

@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.add_text:
Intent intent = new Intent(this, AddActivity.class);
startActivity(intent);
finish();
break;
case R.id.check_text:
Intent intent1 = new Intent(this, NoteListActivity.class);
startActivity(intent1);
default:
break;
}
}

private long timeExit=0;

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK&&event.getAction()==KeyEvent.ACTION_DOWN){
if (System.currentTimeMillis()-timeExit>2000){
timeExit=System.currentTimeMillis();
Toast.makeText(getApplicationContext(),"再按一下退出", Toast.LENGTH_SHORT).show();
}
else {
System.exit(0);
}
return true;
}else {
return super.onKeyDown(keyCode, event);
}

}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android Collapsing