CollapsingToolbarLayout的使用,实现向上滑动时,图片自动压缩消失,下拉到最上面图片显示出来

代码:CollapsingToolbarLayout的使用

1.activity_main.xml

<?xml version="1.0" encoding="utf-8"?> <android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent">
<android.support.design.widget.AppBarLayout android:layout_width="match_parent" android:layout_height="200dp" android:fitsSystemWindows="true">
<android.support.design.widget.CollapsingToolbarLayout android:id="@+id/collapsing_toolbar_layout" android:layout_width="match_parent" android:layout_height="match_parent" android:minHeight="200dp" app:contentScrim="?attr/colorPrimary" app:expandedTitleMarginEnd="10dp" app:expandedTitleMarginStart="10dp" app:collapsedTitleGravity="left" app:collapsedTitleTextAppearance="@style/TextAppearance.AppCompat.Widget.ActionBar.Title" app:layout_scrollFlags="scroll|exitUntilCollapsed">
<ImageView android:id="@+id/iv" android:layout_width="match_parent" android:layout_height="match_parent" android:scaleType="centerCrop" app:layout_collapseMode="parallax" app:layout_collapseParallaxMultiplier="0.5"/>
<android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" app:layout_collapseMode="pin" /> </android.support.design.widget.CollapsingToolbarLayout>
</android.support.design.widget.AppBarLayout>
<android.support.v4.widget.NestedScrollView android:layout_width="match_parent" android:layout_height="match_parent" app:layout_behavior="@string/appbar_scrolling_view_behavior">
<LinearLayout android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <LinearLayout android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="100dp"> <TextView android:layout_width="0dp" android:layout_weight="4" android:background="@color/colorPink" android:text="访客记录" android:gravity="center" android:textSize="25sp" android:textColor="#ffffff" android:layout_height="match_parent" /> <View android:layout_width="1dp" android:layout_height="match_parent"/> <TextView android:textSize="25sp" android:background="@color/colorPink2" android:layout_width="0dp" android:layout_weight="5" android:text="远程开门" android:textColor="#ffffff" android:gravity="center" android:layout_height="match_parent" /> </LinearLayout> <LinearLayout android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="100dp"> <TextView android:textSize="25sp" android:background="@color/colorOrange" android:layout_width="0dp" android:layout_weight="5" android:text="生活缴费" android:textColor="#ffffff" android:gravity="center" android:layout_height="match_parent" /> <View android:layout_width="1dp" android:layout_height="match_parent"/> <TextView android:layout_width="0dp" android:layout_weight="4" android:background="@color/colorOrange2" android:text="通讯录" android:gravity="center" android:textSize="25sp" android:textColor="#ffffff" android:layout_height="match_parent" />
</LinearLayout> <include layout="@layout/item_card"/> <include layout="@layout/item_card"/> <include layout="@layout/item_card"/> <include layout="@layout/item_card"/> <include layout="@layout/item_card"/> <include layout="@layout/item_card"/> <include layout="@layout/item_card"/> <include layout="@layout/item_card"/>
</LinearLayout> </android.support.v4.widget.NestedScrollView> </android.support.design.widget.CoordinatorLayout>

2.item_card.xml
<?xml version="1.0" encoding="utf-8"?> <android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="100dp" android:layout_margin="5dp" app:cardElevation="5dp" app:contentPaddingTop="2dp" app:contentPaddingBottom="2dp">
<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Learn and Share Android" android:textSize="20sp" android:layout_gravity="center"/>
</android.support.v7.widget.CardView>

3.MainActivity.class
public class MainActivity extends AppCompatActivity {
private ImageView iv; private CollapsingToolbarLayout collapsingToolbarLayout; private Toolbar toolbar;
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main);
collapsingToolbarLayout = (CollapsingToolbarLayout) findViewById(R.id.collapsing_toolbar_layout); iv = (ImageView) findViewById(R.id.iv); toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); toolbar.setNavigationIcon(R.mipmap.ic_drawer_home); collapsingToolbarLayout.setTitle("Demo"); collapsingToolbarLayout.setCollapsedTitleTextColor(Color.WHITE); collapsingToolbarLayout.setExpandedTitleColor(Color.WHITE); iv.setImageResource(R.mipmap.ic_bg); }
@Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.menu_main, menu); return true; }
@Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId();
//noinspection SimplifiableIfStatement if (id == R.id.action_notifications) { Log.d("cylog","click menu"); return true; }
return super.onOptionsItemSelected(item); } }

4.res--->menu--->menu_main.xml
<?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:yourapp="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" tools:context=".MainActivity">>
<item android:id="@+id/action_notifications" android:title="Notifications" android:icon="@mipmap/ic_notifications" app:showAsAction="ifRoom"/>
</menu>
5.values--->styles.xml
<resources><style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"><!-- Customize your theme here. --> <item name="colorPrimary">#269fe2</item> <item name="colorPrimaryDark">#3A5FCD</item> <!--item name="android:textColorSecondary">#ffffff</item--> </style>
</resources>
6.values--->strings.xml
<resources> <string name="app_name">Demo</string> <string name="hello_world">Hello world!</string> <string name="action_settings">Settings</string> </resources>
7.values--->dimens.xml
<resources> <!-- Default screen margins, per the Android Design guidelines. --> <dimen name="activity_horizontal_margin">16dp</dimen> <dimen name="activity_vertical_margin">16dp</dimen> </resources>
8.values--->colors.xml
<resources> <!-- Default screen margins, per the Android Design guidelines. --> <dimen name="activity_horizontal_margin">16dp</dimen> <dimen name="activity_vertical_margin">16dp</dimen> </resources>
9.AndroidManifies.xml
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.yld.demo">
<application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application>
</manifest>

10.build.gradle(app)
dependencies { compile fileTree(include: ['*.jar'], dir: 'libs') compile 'com.android.support:cardview-v7:26.1.0' compile 'com.android.support:design:26.1.0' compile 'com.android.support:appcompat-v7:26.1.0' }

 
 
原文地址:https://www.cnblogs.com/xiaoshumiao/p/8568301.html