Coder Social home page Coder Social logo

Comments (11)

laobie avatar laobie commented on May 27, 2024

这个方法不涉及位移,贴上图说明下?
@sungerk

from statusbarutil.

sungerk avatar sungerk commented on May 27, 2024

qq 20160904114738
qq 20160904114847

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.SwipeRefreshLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/swipe_container"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true"
    android:background="#f2f2f2"
    app:layout_behavior="@string/appbar_scrolling_view_behavior">

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


        <android.support.design.widget.AppBarLayout
            android:id="@+id/appBarLayout"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:fitsSystemWindows="true"
            android:background="#fff"
            android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">

            <android.support.design.widget.CollapsingToolbarLayout
                android:id="@+id/collapse_toolbar"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:fitsSystemWindows="true"
                app:contentScrim="@color/white"
                app:layout_scrollFlags="scroll|exitUntilCollapsed">

                <include layout="@layout/view_header_view_user_info"></include>

                <include layout="@layout/common_toolbar"></include>

                <android.support.design.widget.TabLayout
                    android:id="@+id/tab_layout"
                    android:layout_width="match_parent"
                    android:layout_height="?attr/actionBarSize"
                    android:layout_gravity="bottom"
                    android:background="@color/white"
                     app:tabIndicatorColor="@color/colorAccent"
                    app:tabSelectedTextColor="#000"
                    app:tabTextColor="#000"
                    app:tabMode="scrollable"/>

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

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

        <android.support.v4.view.ViewPager
            android:id="@+id/view_pager"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            app:layout_behavior="@string/appbar_scrolling_view_behavior" />
        <android.support.design.widget.FloatingActionButton
            android:id="@+id/fab"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="bottom|start"
            android:layout_margin="@dimen/fab_margin"
            app:rippleColor="#ff8500"
            app:backgroundTint="#ff5900"
            app:srcCompat="@mipmap/ico_back"
            app:elevation="6dp"
            app:pressedTranslationZ="12dp"
            app:layout_behavior="com.dumovie.app.widget.behavior.ScrollAwareFABBehavior"
            />

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


</android.support.v4.widget.SwipeRefreshLayout>

view_header_view_user_info.xml

 <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:fresco="http://schemas.android.com/apk/res-auto"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:paddingBottom="?attr/actionBarSize">

    <com.facebook.drawee.view.SimpleDraweeView
        android:layout_marginTop="-1dp"
        android:id="@+id/imageview_user_skin"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        fresco:actualImageScaleType="fitXY"
        fresco:placeholderImage="@mipmap/bg_user_skin"
        fresco:viewAspectRatio="1.62" />

    <com.facebook.drawee.view.SimpleDraweeView
        android:id="@+id/imageview_user_header_iamge"
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:layout_alignBottom="@+id/imageview_user_skin"
        android:layout_centerHorizontal="true"
        android:layout_marginBottom="40dp"
        fresco:placeholderImage="@mipmap/ico_peron_non"
        app:layout_behavior=" com.dumovie.app.widget.behavior.AvatarImageBehavior"/>


</RelativeLayout>

顶部图片好像不能在状态栏显示

from statusbarutil.

laobie avatar laobie commented on May 27, 2024

顶部图片在状态栏显示需要用 setForImageView 那个方法,你用了 CollapsingToolbarLayout 可能也有问题,因为这个 CollapsingToolbarLayout 的滑动变化应该是他自己处理的,你用工具类没法处理滑动后状态栏变化的。

from statusbarutil.

sungerk avatar sungerk commented on May 27, 2024

都试了都不行,看新浪微博手机客户端,个人主页就实现了

from statusbarutil.

laobie avatar laobie commented on May 27, 2024

@sungerk 新浪的肯定是自己监听滑动然后动态设置状态栏的,不会是使用 CollapsingToolbarLayout 的。
或者你要使用 CollapsingToolbarLayout 的话看看这篇文章中提到的 http://blog.csdn.net/u013260551/article/details/51150336。

实现肯定是可以的,但是肯定不是用这个工具类能简单搞定的。

from statusbarutil.

sungerk avatar sungerk commented on May 27, 2024

谢谢

from statusbarutil.

sungerk avatar sungerk commented on May 27, 2024

完美搞定了

from statusbarutil.

laobie avatar laobie commented on May 27, 2024

@sungerk 哪个方案搞定的

from statusbarutil.

sungerk avatar sungerk commented on May 27, 2024

private static View mStatusBarView;

/**
 * CollapsingToolbarLayout状态栏(可折叠图片)
 *
 * @param activity
 * @param coordinatorLayout
 * @param appBarLayout
 * @param imageView
 * @param toolbar
 */
public static void setCollapsingToolbar(Activity activity, CoordinatorLayout coordinatorLayout,
                                        AppBarLayout appBarLayout, ImageView imageView, Toolbar toolbar) {
    if (Build.VERSION.SDK_INT == Build.VERSION_CODES.KITKAT) {
        coordinatorLayout.setFitsSystemWindows(false);
        appBarLayout.setFitsSystemWindows(false);
        imageView.setFitsSystemWindows(false);
        toolbar.setFitsSystemWindows(true);
        CollapsingToolbarLayout.LayoutParams lp = (CollapsingToolbarLayout.LayoutParams) toolbar.getLayoutParams();
        lp.height = (int) (getStatusBarHeight(activity) +
                activity.getResources().getDimension(R.dimen.abc_action_bar_default_height_material));
        toolbar.setLayoutParams(lp);
        setKKStatusBar(activity, R.color.statusBar);
        setCollapsingToolbarStatus(appBarLayout);
    }
}

/**
 * Android4.4上CollapsingToolbar折叠时statusBar显示和隐藏
 *
 * @param appBarLayout
 */
private static void setCollapsingToolbarStatus(AppBarLayout appBarLayout) {
    ViewCompat.setAlpha(mStatusBarView, 1);
    appBarLayout.addOnOffsetChangedListener(new AppBarLayout.OnOffsetChangedListener() {
        @Override
        public void onOffsetChanged(AppBarLayout appBarLayout, int verticalOffset) {
            int maxScroll = appBarLayout.getTotalScrollRange();
            float percentage = (float) Math.abs(verticalOffset) / (float) maxScroll;
            ViewCompat.setAlpha(mStatusBarView, percentage);
        }
    });
}

private static void setKKStatusBar(Activity activity, int statusBarColor) {
    ViewGroup contentView = (ViewGroup) activity.findViewById(android.R.id.content);
    mStatusBarView = contentView.getChildAt(0);
    //改变颜色时避免重复添加statusBarView
    if (mStatusBarView != null && mStatusBarView.getMeasuredHeight() == getStatusBarHeight(activity)) {
        mStatusBarView.setBackgroundColor(ContextCompat.getColor(activity, statusBarColor));
        return;
    }
    mStatusBarView = new View(activity);
    ViewGroup.LayoutParams lp = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
            getStatusBarHeight(activity));
    mStatusBarView.setBackgroundColor(ContextCompat.getColor(activity, statusBarColor));
    contentView.addView(mStatusBarView, lp);
}

private static int getStatusBarHeight(Context context) {
    int resourceId = context.getResources().getIdentifier("status_bar_height", "dimen", "android");
    return context.getResources().getDimensionPixelSize(resourceId);
}

from statusbarutil.

laobie avatar laobie commented on May 27, 2024

@sungerk 看起来不错

from statusbarutil.

sungerk avatar sungerk commented on May 27, 2024

...........国产手机无法适配.........

from statusbarutil.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.