工作内容:
1.再次熟悉回调函数
2.ViewPager的使用(ViewPager单独使用实现无限循环)
3.Android第三方包(资源的引入)
学习分享:
1.回调函数的使用请参考之前的文章,【主要是(接口A)你在Activity中使用类B中的方法(传递接口A的实现类的对象进该方法),B中方法参数(A a),使用a的方法去做式,这里的a的方法使用的就是在Activity中实现的方法,也就是说,调用a的方法实际是调用了B中的实现方法】
2.ViewPager+TabLayout的使用步骤如下
xml中使用
<android.support.design.widget.TabLayout android:id="@+id/tl_home" android:layout_width="match_parent" android:layout_height="wrap_content" app:tabIndicatorColor="@color/orange" app:tabSelectedTextColor="@color/orange" app:tabTextColor="@color/deepskyblue" app:tabGravity="fill" //tabGravity = “fill” 与 tabMode="fixed" 联合使“标题”可以平分TabLayout的宽度(不够则挤压) app:tabMode="fixed" //属性设置成scrollable时,标题栏很多的情况可以滑动 android:fillViewport="false" ></android.support.design.widget.TabLayout>
<android.support.v4.view.ViewPager android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="1" android:id="@+id/vp_home"> </android.support.v4.view.ViewPager>
java文件(PagerAdapter——ViewPager必须配置)
import android.view.View; import android.view.ViewGroup; import java.util.List; /** * Created by Administrator on 2016/8/30. */ public class PagerAdapter_all extends android.support.v4.view.PagerAdapter { private List<View> viewList; private List<String> titles; //没有标题栏的时候用【单一的ViewPager】 public PagerAdapter_all(List<View> viewList){ this.viewList = viewList; } //要用标题栏的时候用【与TabLayout联合使用】 public PagerAdapter_all(List<View> viewList, List<String> titles){ this.viewList = viewList; this.titles = titles; } /** * 显示的页面数 * @return */ @Override public int getCount() { return viewList.size(); } /** * 来判断显示的是否是同一张图片,这里我们将两个参数相比较返回即可 * @param view * @param object * @return */ @Override public boolean isViewFromObject(View view, Object object) { return view == object; } /** * 实例化项(将View添加到父容器) * @param container 父容器(ViewPager) * @param position * @return */ @Override public Object instantiateItem(ViewGroup container, int position) { container.addView(viewList.get(position),0); //暂时只能写0 return viewList.get(position); } /** * 销毁page(从父容器中清楚view) * @param container 父容器(ViewPager) * @param position 项 * @param object */ @Override public void destroyItem(ViewGroup container, int position, Object object) { container.removeView(viewList.get(position)); } //添加标题栏的时候使用【TabLayout做标题栏时】 @Override public CharSequence getPageTitle(int position) { return titles.get(position); } }
java文件(Activity)(这段代码与上面的适配器不匹配,仅供参考)
import android.graphics.Color; import android.support.design.widget.TabLayout; import android.support.v4.view.ViewPager; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.support.v7.widget.Toolbar; import android.view.Menu; import android.view.View; import android.widget.ImageView; import java.util.ArrayList; import java.util.List; import test.android.com.testapplication.adapter.MyPagerAdapter; public class DrawerLayoutDemoActivity extends AppCompatActivity { private Toolbar toolbar; private List<View> views; private List<String> titles; private MyPagerAdapter adapter; private ViewPager vp; private TabLayout tab; private ImageView iv; private int [] imgIDs = {R.drawable.a111,R.drawable.a112,R.drawable.a113,R.drawable.a114,R.drawable.a115 ,R.drawable.a116}; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_drawer_layout_demo); initView(); initData(); } private void initData() { views = new ArrayList<>(); titles = new ArrayList<>(); for (int i = 0; i < imgIDs.length ; i++) { iv = new ImageView(this); iv.setVisibility(View.VISIBLE); iv.setBackgroundResource(imgIDs[i]); views.add(iv); //添加viewPager的View数据 titles.add("标题"+i); //添加标题 } adapter = new MyPagerAdapter(views,titles); vp.setAdapter(adapter); tab.setupWithViewPager(vp); } private void initView() { toolbar = (Toolbar)findViewById(R.id.toolbar_drawer); setToolbar(); vp = (ViewPager)findViewById(R.id.vp_drawer); tab = (TabLayout)findViewById(R.id.tablayout_drawer); } private void setToolbar() { toolbar.setTitle("测试页面"); //标题 toolbar.setTitleTextColor(Color.WHITE); //标题文字颜色 toolbar.setSubtitle("八褂专家"); //副标题 toolbar.setSubtitleTextColor(Color.WHITE); //副标题文字颜色 toolbar.setNavigationIcon(R.drawable.btn_return); //左边图标 setSupportActionBar(toolbar); //核心,设置为标题栏 //设置标题栏左边图标的点击事件 toolbar.setNavigationOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { } }); } //添加标题栏的menu(右边图标) @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.menu_recy,menu); return super.onCreateOptionsMenu(menu); } }
ViewPager单独使用实现左右无限循环:(与TabLayout一起使用会报错)
【第一个页面之前添加最后一个页面,最后一个页面之后添加第一个页面】
3.第三方包(资源框架等)引入步骤