标签: android-viewpager

如何为Android应用创建透明演示屏幕?

我正在尝试创建一个半透明的演示屏幕,该屏幕仅在用户首次安装我的应用程序时启动.以下是Pulse News应用程序的示例:

Galaxy Nexus

来自Pulse News on Galaxy Nexus的截图

Nexus One

在此输入图像描述

我希望用户能够通过几个这样的透明演示页面轻扫,而不是"点按即关闭"功能.

对于我的第一次尝试,我修改了ViewPagerIndicator库中的示例.我在每个视图寻呼机片段中的ImageViews中使用了半透明的PNG.然后我在"主要活动"的onCreate方法中将其作为"演示活动"启动.

问题:在背景中无法看到"主要活动" - 相反它只是黑色.我在这里尝试了解决方案,但这并没有解决问题.

有没有更好的方法来创造这样的东西,还是我走在正确的轨道上?

我还有另一个相关问题,这取决于如何实现.我正在尝试覆盖文本和箭头,以便它们指向背景中的特定UI组件.通过使用具有文本和箭头的PNG,它可能无法在不同设备上正确缩放.即,箭头可能不一定指向背景中的正确UI组件.有没有办法解决这个问题?

谢谢!

这是我第一次尝试的代码:

DemoActivity.java

public class DemoActivity extends FragmentActivity {
    DemoFragmentAdapter mAdapter;
    ViewPager mPager;
    PageIndicator mIndicator;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.demo_activity);

        mAdapter = new DemoFragmentAdapter(getSupportFragmentManager());

        mPager = (ViewPager)findViewById(R.id.pager);
        mPager.setAdapter(mAdapter);
        //mPager.setAlpha(0);

        UnderlinePageIndicator indicator = (UnderlinePageIndicator)findViewById(R.id.indicator);
        indicator.setViewPager(mPager);
        indicator.setFades(false);
        mIndicator = indicator;
    }

}
Run Code Online (Sandbox Code Playgroud)

DemoFragmentAdapter.java

class DemoFragmentAdapter extends FragmentPagerAdapter {
    protected static final int[] CONTENT = new int[] { R.drawable.demo1, R.drawable.demo2, R.drawable.demo3, R.drawable.demo4};

    private …
Run Code Online (Sandbox Code Playgroud)

android transparent demo android-viewpager showcaseview

103
推荐指数
5
解决办法
7万
查看次数

NestedScrollView中的ViewPager

我需要创建一个像Google Newsstand这样的界面,它是一种在折叠标题(垂直滚动)上的ViewPager(水平滚动).我的一个要求是使用Google IO 2015中提供的新设计支持库.(http://android-developers.blogspot.ca/2015/05/android-design-support-library.html)

基于Chris Banes(https://github.com/chrisbanes/cheesesquare)创建的示例,我已经达到了能够执行折叠行为但使用基本LinearLayout(没有水平滚动)的程度.

我试图用ViewPager替换LinearLayout,我得到一个空白屏幕.我玩过:宽度,重量和所有类型的视图组,但....仍然是一个空白的屏幕.似乎ViewPager和NestedScrollView彼此不喜欢.

我通过使用Horizo​​ntalScrollView尝试了一种解决方法:它可以工作,但我放弃了PagerTitleStrip功能的好处,并将焦点放在一个面板上(我可以在两个面板之间水平停​​止).

现在我没有更多的想法,如果有人能引导我找到解决方案......

谢谢

这是我最新的布局文件:

<?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="@dimen/header_height"
        android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">

        <android.support.design.widget.CollapsingToolbarLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            app:contentScrim="?attr/colorPrimary"
            app:expandedTitleMarginEnd="64dp"
            app:expandedTitleMarginStart="48dp"
            app:layout_scrollFlags="scroll|exitUntilCollapsed">

            <include
                layout="@layout/part_header"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                app:layout_collapseMode="parallax"/>

            <android.support.v7.widget.Toolbar
                android:id="@+id/activity_main_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:id="@+id/activity_main_nestedscrollview"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:fillViewport="true"
        app:layout_behavior="@string/appbar_scrolling_view_behavior">

        <android.support.v4.view.ViewPager
            android:id="@+id/activity_main_viewpager"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="#FFA0"/>


    </android.support.v4.widget.NestedScrollView>
</android.support.design.widget.CoordinatorLayout>
Run Code Online (Sandbox Code Playgroud)

android android-layout android-viewpager android-support-library

102
推荐指数
11
解决办法
7万
查看次数

Android ViewPager - 在左侧和右侧显示页面预览

我正在使用Android ViewPager.我想要做的是在左侧和右侧显示页面的预览.我已经看到我可以使用负片pageMargin来显示右侧的预览.

setPageMargin(-100);
Run Code Online (Sandbox Code Playgroud)

无论如何我还能展示左侧的预览吗?它基本上类似于我正在寻找的画廊小部件.

android android-viewpager

99
推荐指数
9
解决办法
5万
查看次数

ViewPager.setOffscreenPageLimit(0)无法按预期工作

我在我的ViewPager实例中使用的片段是非常耗费资源的,所以我只想一次加载一个.当我尝试以下内容时:

mViewPager.setOffscreenPageLimit(0);
mViewPager.setAdapter(mPagerAdapter);
Run Code Online (Sandbox Code Playgroud)

我的FragmentStatePagerAdapter.getItem(int position)覆盖功能被调用3次,这是我打电话时发生的事情mViewPager.setOffscreenPageLimit(1).我希望它只被调用一次,因为我指定了0个屏幕外页面.

我相信我正在正确地呼唤一切,因为如果我打电话mViewPager.setOffscreenPageLimit(2),FragmentStatePagerAdapter.getItem(int position)就像我期望的那样被召唤5次.

ViewPager是否需要至少1个屏幕外页面,或者我在这里做错了什么?

android android-viewpager android-support-library

97
推荐指数
4
解决办法
7万
查看次数

ViewPager中使用FragmentPagerAdapter的片段在第二次查看时为空白

我有一个片段界面,底部有标签,可以在主视图中打开不同的片段.

我有一个特定的片段,它是一个项目列表.如果用户选择此列表中的一个项目,则打开另一个片段,其中包含一个viewpager,它在前一个片段的列表中的所有项目之间水平滚动.这非常有效.

viewpager使用FragmentPagerAdapter来显示项目.

当用户选择列表中的项目,查看它,然后点击标签栏上的按钮返回列表,然后选择另一个项目时,问题就出现了.第二次选择项目时,将显示空白屏幕而不是viewpager.发生这种情况时,我的LogCat中没有收到任何错误.

为什么viewpager只出现在第一次?

FragmentPagerAdapter:

public class ViewPagerAdapter extends FragmentPagerAdapter {
    Cursor mCursor;

    public ViewPagerAdapter(FragmentManager fm, Cursor c) {
        super(fm);
        mCursor = c;
    }

    public void changeCursor(Cursor c) {
        mCursor = c;
        this.notifyDataSetChanged();
    }

    @Override
    public int getCount() {
        if (mCursor == null) return 0;
        else return mCursor.getCount();
    }

    @Override
    public Fragment getItem(int position) {
        mCursor.moveToPosition(position);
        return TeamCardFragment.newInstance(mCursor, position);
    }
}
Run Code Online (Sandbox Code Playgroud)

PagerFragment:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    Bundle bundle = getArguments();
    mCursorPosition = bundle.getInt(TeamCardCommon.BUNDLE_KEY_CURSOR_POSITION); …
Run Code Online (Sandbox Code Playgroud)

android android-fragments android-viewpager android-nested-fragment

96
推荐指数
6
解决办法
4万
查看次数

使用Google Maps API v2的ViewPager:神秘的黑色视图

我在视图寻呼机中集成了新的谷歌地图api v2片段.从地图片段滚动时,黑色视图与相邻片段重叠.有人解决了吗?

编辑:截图

在此输入图像描述

public static class PagerAdapter extends FragmentPagerAdapter{

    public PagerAdapter(FragmentManager fm) {
        super(fm);
    }

    @Override
    public int getCount() {
        return NUM_ITEMS;
    }

    @Override
    public Fragment getItem(int position) {

        Fragment pageFragment;

        switch (position) {
        case 0:
            pageFragment = new TabAFragment();
            break;

        case 1:
            pageFragment = new TabBFragment();
            break;

        case 2:
            pageFragment = SupportMapFragment.newInstance();
            break;

        default:
            pageFragment = null;
            break;
        }

        return pageFragment;
    }
}
Run Code Online (Sandbox Code Playgroud)

android google-maps android-viewpager

95
推荐指数
4
解决办法
2万
查看次数

SwipeRefreshLayout + ViewPager,仅限制水平滚动?

我实现了SwipeRefreshLayoutViewPager我的应用程序,但有一个大麻烦:每当我要去刷卡左/右滚动页面之间切换过于敏感.稍微向下滑动也会触发SwipeRefreshLayout刷新.

我想设置水平滑动开始时的限制,然后强制水平直到滑动结束.换句话说,当手指水平移动时,我想取消垂直滑动.

这个问题只发生在ViewPager,如果我向下滑动并SwipeRefreshLayout触发刷新功能(显示条形图)然后我水平移动手指,它仍然只允许垂直滑动.

我试图扩展ViewPager课程,但它根本不起作用:

public class CustomViewPager extends ViewPager {

    public CustomViewPager(Context ctx, AttributeSet attrs) {
        super(ctx, attrs);
    }

    @Override
    public boolean onInterceptTouchEvent(MotionEvent ev) {
        boolean in = super.onInterceptTouchEvent(ev);
        if (in) {
            getParent().requestDisallowInterceptTouchEvent(true);
            this.requestDisallowInterceptTouchEvent(true);
        }
        return false;
    }

}
Run Code Online (Sandbox Code Playgroud)

布局xml:

<android.support.v4.widget.SwipeRefreshLayout
    android:id="@+id/viewTopic"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <com.myapp.listloader.foundation.CustomViewPager
        android:id="@+id/topicViewPager"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>
</android.support.v4.widget.SwipeRefreshLayout>
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激,谢谢

android gesture android-viewpager swiperefreshlayout

89
推荐指数
5
解决办法
3万
查看次数

ScrollView中的ViewPager不会滚动correclty

我有一个"页面",其上有许多组件,其内容的长度超过了设备的高度.好吧,只需将所有布局(整个页面)放在里面ScrollView,没问题.

其中一个组件是ViewPager.这可以正确呈现,但是对滑动/拖动的响应没有正确执行,它是紧张的,并不总是有效.它似乎与'混淆' ScrollView,所以当你在一条精确的水平线上投掷时,只能100%工作.

如果我删除了ScrollView,ViewPager会完美响应.

我有一个搜索,并没有发现这是一个已知的缺陷.还有其他人经历过这个吗?

  • 平台版本:1.6
  • 兼容性库v4.
  • 装置:HTC Incredible S.

下面是一些示例代码供您测试,注释掉ScrollView以查看它是否正常工作.

活动:

package com.ss.activities;

import com.ss.R;

import android.app.Activity;
import android.content.Context;
import android.graphics.Color;
import android.os.Bundle;
import android.os.Parcelable;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.View;
import android.widget.TextView;

public class PagerInsideScollViewActivity extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        ViewPager vp = (ViewPager) findViewById(R.id.viewpager);
        vp.setAdapter(new MyPagerAdapter(this));
    }
}

class MyPagerAdapter extends PagerAdapter {

    private Context ctx;

    public MyPagerAdapter(Context context) {
        ctx = …
Run Code Online (Sandbox Code Playgroud)

android scrollview android-viewpager

88
推荐指数
3
解决办法
7万
查看次数

ViewPager不重绘内容,保持/变为空白

我们在这里遇到了一个非常奇怪的ViewPager问题.我们在每个ViewPager页面上嵌入了列表,并在更新列表数据时在列表适配器和视图寻呼机适配器上触发notifyDataSetChanged.

我们观察到的是,有时候,页面不会更新其视图树,即保持空白,或者有时甚至在分页时消失.来回寻呼几次时,内容会突然重新出现.似乎Android在这里缺少视图更新.我还注意到,在使用层次结构查看器进行调试时,选择一个视图将始终使其重新出现,这显然是因为层次结构查看器强制所选视图重绘自身.

我不能以编程方式完成这项工作; 使列表视图无效,甚至整个视图寻呼机都无效.

这与compatibility-v4_r7库有关.我也尝试使用最新版本,因为它声称修复了与查看寻呼机相关的许多问题,但它更糟糕的是(例如,手势被打破,以至于它不会让我不再遍历所有页面.)

是否还有其他人遇到这些问题,或者您是否知道可能导致此问题的原因?

android android-viewpager

84
推荐指数
4
解决办法
5万
查看次数

获取ViewPager的当前位置

我知道使用Gallery小部件我可以使用getSelectedItemPosition(); 检索当前位置,但看起来ViewPager似乎没有.

我知道我可以设置一个监听器并在切换页面时检索位置.但我想要当前的观点位置.

android android-viewpager

82
推荐指数
3
解决办法
8万
查看次数