android:layout_below=“@+id/ll_viewpager”
android:scaleType=“matrix”
android:src=“@drawable/cursor” />
<android.support.v4.view.ViewPager
android:id=“@+id/viewpager”
android:layout_width=“wrap_content”
android:layout_height=“wrap_content”
android:layout_below=“@+id/cursor”
android:flipInterval=“30”
android:persistentDrawingCache=“animation” />
每一个标签页的布局
<?xml version="1.0" encoding="UTF-8"?><RelativeLayout xmlns:android=“http://schemas.android.com/apk/res/android”
android:layout_width=“fill_parent”
android:layout_height=“fill_parent”
android:background=“@drawable/guide_1” >
其他都一样,不多贴
布局搞定之后,定义一个适配器如下:
package com.wwj.viewpager;
import java.util.List;
import android.support.v4.view.PagerAdapter;
import android.view.View;
import android.view.ViewGroup;
/**
-
ViewPager适配器
-
@author wwj
*/
public class ViewPagerAdapter extends PagerAdapter {
// 界面列表
private List views;
public ViewPagerAdapter(List views) {
this.views = views;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView(views.get(position));
}
@Override
public int getCount() {
if (views != null) {
return views.size();
}
return 0;
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
container.addView(views.get(position)); // 把被点击的图片放入缓存中
return views.get(position); // 返回被点击图片对象
}
@Override
public boolean isViewFromObject(View arg0, Object arg1) {
return (arg0 == arg1);
}
}
适配器搞定之后,直接去Activity
package com.wwj.viewpager;
import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.graphics.BitmapFactory;
import android.graphics.Matrix;
import android.os.Bundle;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.util.DisplayMetrics;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.animation.Animation;
import android.view.animation.TranslateAnimation;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends Activity {
ViewPager viewPager;
ViewPagerAdapter pagerAdapter;
View view1, view2, view3, view4; // 页面
List views; // Tab页面列表
ImageView img_cursor; // 指示图片
TextView tv_guid1, tv_guid2, tv_guid3, tv_guid4; // 页卡头标
int offset = 0; // 偏移量
int currIndex = 0; // 当前页卡编号
int bmpW; // 图片宽度
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initImageView();
initTextView();
view1 = (View) findViewById(R.layout.viewpager1);
view2 = (View) findViewById(R.layout.viewpager2);
view3 = (View) findViewById(R.layout.viewpager3);
view4 = (View) findViewById(R.layout.viewpager4);
LayoutInflater inflater = LayoutInflater.from(this);
view1 = inflater.inflate(R.layout.viewpager1, null);
view2 = inflater.inflate(R.layout.viewpager2, null);
view3 = inflater.inflate(R.layout.viewpager3, null);
view4 = inflater.inflate(R.layout.viewpager4, null);
views = new ArrayList();
views.add(view1);
views.add(view2);
views.add(view3);
views.add(view4);
pagerAdapter = new ViewPagerAdapter(views);
viewPager = (ViewPager) findViewById(R.id.viewpager);
viewPager.setAdapter(pagerAdapter);
viewPager.setCurrentItem(0);
viewPager.setOnPageChangeListener(new MyOnPageChangeListener());
}
/**
-
初始化动画图片
*/
private void initImageView() {
img_cursor = (ImageView) findViewById(R.id.cursor);
bmpW = BitmapFactory.decodeResource(getResources(), R.drawable.cursor)
.getWidth();
DisplayMetrics dm = new DisplayMetrics();
this.getWindowManager().getDefaultDisplay().getMetrics(dm);
int screenW = dm.widthPixels; // 获取手机屏幕宽度分辨率
offset = (screenW / 4 - bmpW) / 2; // 获取图片偏移量
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级安卓工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年最新Android移动开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Android)
如何成为Android高级架构师!
架构师必须具备抽象思维和分析的能力,这是你进行系统分析和系统分解的基本素质。只有具备这样的能力,架构师才能看清系统的整体,掌控全局,这也是架构师大局观的形成基础。 你如何具备这种能力呢?一是来自于经验,二是来自于学习。
架构师不仅要具备在问题领域上的经验,也需要具备在软件工程领域内的经验。也就是说,架构师必须能够准确得理解需求,然后用软件工程的思想,把需求转化和分解成可用计算机语言实现的程度。经验的积累是需要一个时间过程的,这个过程谁也帮不了你,是需要你去经历的。
但是,如果你有意识地去培养,不断吸取前人的经验的话,还是可以缩短这个周期的。这也是我整理架构师进阶此系列的始动力之一。
成为Android架构师必备知识技能
对应导图的学习笔记(由阿里P8大牛手写,我负责整理成PDF笔记)
部分内容展示
《设计思想解读开源框架》文章来源:https://www.toymoban.com/news/detail-841488.html
-
目录
-
热修复设计
-
插件化框架设计
《360°全方面性能优化》
-
设计思想与代码质量优化
-
程序性能优化
容展示
《设计思想解读开源框架》
-
目录
[外链图片转存中…(img-VxT1EGOr-1710499559124)] -
热修复设计
[外链图片转存中…(img-fp4tIFMo-1710499559124)] -
插件化框架设计
[外链图片转存中…(img-wYtwUVRV-1710499559125)]
《360°全方面性能优化》
[外链图片转存中…(img-rS5bwr3K-1710499559125)] -
设计思想与代码质量优化
[外链图片转存中…(img-aQOccma1-1710499559125)] -
程序性能优化
[外链图片转存中…(img-tP5nqXhQ-1710499559125)]
本文在开源项目:【GitHub 】中已收录,里面包含不同方向的自学编程路线、面试题集合/面经、及系列技术文章等,资源持续更新中…文章来源地址https://www.toymoban.com/news/detail-841488.html
到了这里,关于Android UI--ViewPager扩展Tab标签指示的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!