为了账号安全,请及时绑定邮箱和手机立即绑定
  • 监听Viewpager的具体实现

    查看全部
  • ViewPage的setOnPageListene被弃用,改用addOnPageListener即可

    查看全部
  • 为ViewPager添加Fragment

    1. 创建对应的类继承Fragment

    2. 创建对应的布局文件

    3. FragmentPagerAdapter设置Fragment的适配器
    4. ViewPager添加适配器
    查看全部
  • Display display = getWindow.getWindowManager.getDefaultDisplay();
    DisplayMetrics windowMetrics = new DisplayMetrics();
    dispaly.getMetrics(windowMetrics);
    mScreen1_2 = windowMetrics / 2;


    查看全部
  • 让指示器跟随屏幕的移动而移动
    查看全部
  • 让指示器占据屏幕的三分之一
    查看全部
  • 直接lp.leftMargin= (int) (mCurrentPageIndex*mScreen1_3+(positionOffset+position-mCurrentPageIndex)*mScreen1_3); 就不用判断了吧
    查看全部
  • 其实可以更简单 直接设置 leftmargin=position*mscreen1_3+(int)(positionOffset*mscreen1_3)就行了
    查看全部
  • 界面效果
    查看全部
  • 关于onPageScrolled(int position, float positionOffset, int positionOffsetPixels)三个参数的分析: 在该方法中添加如下代码,打印日志: Log.i("info","position="+position+",positionOffset="+positionOffset +",positionOffsetPixels="+positionOffsetPixels); // 观察在滑动页面的时候三者各自的变化情况 情况总结: position就是当前页面的编号,范围从0到N-1(N为页面总数),滑动时非连续变化,是直接由一个整数变为相邻的整数。 当position由0变为1的时候,positionOffset是从0逐渐增加到1。 当position由1变为0的时候,positionOffset是从1逐渐减少到0。 依此类推。 而positionOffsetPixels = positionOffset * 屏幕宽度。
    查看全部
  • 代码部分: 1.首先添加一个成员变量:private int mScreen1_3; 2.创建方法,用于改变Tabline的位置: public void initTabline() { mTabline = (ImageView)findViewById(R.id.id_iv_tabline); Display display = getWindow().getWindowManager().getDefaultDisplay(); DisplayMetrics outMetrics = new DisplayMetrics(); display.getMetrics(outMetrics); // 此时outMetrics已经携带了屏幕的宽度、高度等信息 mScreen1_3 = outMetrics.widthPixels/3; ViewGroup.LayoutParams lp = mTabline.getLayoutParams(); lp.width = mScreen1_3; mTabline.setLayoutParams(lp); } 3.在监听事件onPageScrolled()添加如下代码: LinearLayout.LayoutParams lp = (LinearLayout.LayoutParams) mTabline.getLayoutParams(); lp.leftMargin = (int)((positionOffset+position) * mScreen1_3); mTabline.setLayoutParams(lp);
    查看全部
  • Android Studio快捷键:Ctrl + Alt + M,可以将选中的一段代码抽取成为一个独立的方法。 在Eclipse上是 Alt+shift+M。 Tab类型App的主界面有以下几种 1. 早期类型:ViewPager + 多个布局文件,底部可以是LinearLayout或者RadioButton,通过点击底部的时候不断改变ViewPager的setCurrentPager(),就可以实现tab的切换。 2. Android3.0开始使用Fragment,通过 FragmentManager + Fragment实现。这种方式没有使用ViewPager,所以无法实现由手指拖动的屏幕切换效果。 3. ViewPager + FragmentPagerAdapter,也就是本课程的方式,这种方式集合了上述两点的优点,既可以实现左右拖动的效果,并且也实现了代码的分离,即:空白区域每个Tab下的内容都是一个Fragment并且能左右拖动。 4. 早期的并且不被谷歌推荐的方式:TabHost。 如果不需要进行左右拖动,而只是点击切换的话,推荐使用第2种方式:布局更加灵活、便于复用。 课程回顾: 1. BadgeView的使用。 2. ViewPager的3种监听事件(例如 onPagerListener )的分析,包括对其参数的分析。 3. 为Tabline(作为指示器)找到合适的参数类型,使其不断地改变leftMargin,实现指示器跟随手指的一个拖动效果。 4. 目标:更加熟练地掌握 ViewPager + FragmentPagerAdapter
    查看全部
  • 本节的编程步骤: 1. 给top2的chat所在的LinearLayout设置id。 2. 在MainActivity中添加两个成员变量: private BadgeView mBadgeView; // 消息提醒的数字效果 private LinearLayout mChatLinearLayout; 3. 在init()中初始化mChatLinearLayout: mChatLinearLayout = (LinearLayout)findViewById(R.id.id_ll_chat); 在监听事件onPageSelected中添加消息的显示: case 0: if(mBadgeView!=null){ // 防止mBadgeView的累积 mChatLinearLayout.removeView(mBadgeView); } mBadgeView = new BadgeView(MainActivity.this); mBadgeView.setBadgeCount(7); // 显示7条消息 mChatLinearLayout.addView(mBadgeView); // 将BadgeView添加到布局中 mChatTextView.setTextColor(0xFF008000); break; ------------------- 在Android Studio中直接添加下载好的BadgeView.java到项目之下,而无需添加badgeview.jar到libs,就可以在项目中创建BadgeView对象。
    查看全部
  • 新建3个Fragment作为3个页面,会比使用3个Activity作为页面要轻量一些,代码不会臃肿。 例如新建一个通讯录的Fragment(另外两个依此类推): public class ContactTabFragment extends Fragment{ @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { return inflater.inflate(R.layout.tab3,container,false); } } 对应的布局文件tab03.xml只添加一个TextViwe: <TextView android:text="This is the third Tab" android:textSize="22sp" android:textStyle="bold" android:layout_width="wrap_content" android:layout_height="wrap_content" />
    查看全部
  • 主界面的代码,注意这里继承的是FragmentActivity,不是Activity。 public class MainActivity extends FragmentActivity{ private ViewPager mViewPager; private FragmentPagerAdapter mAdapter; private List<Fragment> mData; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); requestWindowFeature(Window.FEATURE_NO_TITLE); init(); } public void init(){ mViewPager = (ViewPager)findViewById(R.id.id_viewPager); mData = new ArrayList<Fragment>(); ChatTabFragment tab01 = new ChatTabFragment(); FriendTabFragment tab02 = new FriendTabFragment(); ContactTabFragment tab03 = new ContactTabFragment(); mData.add(tab01); mData.add(tab02); mData.add(tab03); mAdapter = new FragmentPagerAdapter(getSupportFragmentManager()) { @Override public Fragment getItem(int position) { return mData.get(position); } @Override public int getCount() { return mData.size(); } }; mViewPager.setAdapter(mAdapter); } }
    查看全部
  • 完完全全按照老师的代码编写,则会在Android Studio的运行中报出异常: Error: java.util.concurrent.ExecutionException: com.android.ide.common.proce... 原因是 top1_bg.9 并非是严格的.9格式图片,我们必须删掉它,直接用颜色#000000代替就行。 然后重启,就可以了。但如果还是报同样的错误,那就是tabline.9这张图片也有问题,解决方法参见:http://www.imooc.com/qadetail/73825 里面的“板栗酥饼”的方法。 关于.9图片在Android Studio上报错的原因,参见:http://blog.csdn.net/omrleft123/article/details/54381752
    查看全部
  • 如图,是top2布局的编写: <LinearLayout android:layout_width="match_parent" android:layout_height="37dp"> <LinearLayout android:layout_width="3dp" android:gravity="center" android:layout_weight="1" android:layout_height="match_parent"> <TextView android:textColor="#008000" android:text="聊天" android:layout_width="wrap_content" android:layout_height="wrap_content" ></TextView> </LinearLayout> <LinearLayout TextView"发现" </LinearLayout> <LinearLayout TextView"通讯录" </LinearLayout> </LinearLayout> <ImageView android:layout_width="120dp" android:layout_height="3dp" android:background="@drawable/tabline"></ImageView>
    查看全部
  • 如图,在主界面中添加另外两个布局。
    查看全部
  • 界面顶端的布局: <LinearLayout android:gravity="center" android:layout_centerVertical="true" android:layout_width="wrap_content" android:layout_height="wrap_content"> <ImageView android:layout_width="30dp" android:layout_height="30dp" android:src="@drawable/actionbar_icon"/> <TextView android:layout_marginStart="12dp" android:text="微信" android:textColor="#d3d3d3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="18sp"/> </LinearLayout> <LinearLayout android:layout_centerVertical="true" android:layout_alignParentRight="true" android:layout_width="wrap_content" android:layout_height="wrap_content"> 这里添加3个ImageView,和上面的ImageView一样,但图片改为actionbar_search_icon、actionbar_add_icon 和 actionbar_more_icon。 </LinearLayout>
    查看全部
  • 模仿微信的主界面 如图,当手指在界面上进行左右拨动的时候,上面蓝色的Tab会跟随手指一起移动,当移动到确切的Tab时,该Tab的文字颜色会由黑色变为绿色。 主体可滑动部分是ViewPager,上面的指示器会跟随手指移动(这是本课程的难点),还有红色的消息通知,用的是GitHub上的BadgeView。 网站:https://github.com/stefanjauker/BadgeView,点击右侧栏的“Download Zip”即可下载源码。其中的Sample Code就是要实现的通知的样子。
    查看全部
首页上一页1234567下一页尾页

举报

0/150
提交
取消
课程须知
本课程对于学习者要求较高,最少也要达到以下两个要求,首先,对Java语言的掌握,必须熟悉、熟练、精通;其次,要对Android中的布局达到小成的境界,熟悉Android常用API;最后再加一条,如果想很好的跟上老师的讲课速度,那么好好熟悉一下Eclipse IDE吧
老师告诉你能学到什么?
1、BadgeView的使用 2、ViewPager与FragmentPagerAdapter结合制作主界面 3、ViewPager的OnPageChangeListener的详细介绍 4、如何巧妙利用onPageScrolled方法,完美实现指示器的动画效果

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!