MainActivity.java
package com.wust.mydialog;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.LinearLayout;
import androidx.annotation.NonNull;
import androidx.viewpager.widget.PagerAdapter;
import androidx.viewpager.widget.ViewPager;
public class MainActivity extends Activity {
private ViewPager vp_img;
private int[] imageIds = new int[]
{
R.drawable.pre1, R.drawable.pre2, R.drawable.pre3, R.drawable.pre4,
R.drawable.pre5, R.drawable.pre6, R.drawable.pre7, R.drawable.pre8,
R.drawable.pre9, R.drawable.pre10, R.drawable.pre11, R.drawable.pre12,
R.drawable.pre13, R.drawable.pre14, R.drawable.pre15, R.drawable.pre16,
R.drawable.pre17, R.drawable.pre18, R.drawable.pre19, R.drawable.pre20,
R.drawable.pre21
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
bindView();
bindData();
}
private void bindView() {
vp_img = findViewById(R.id.vp_img);
}
private void bindData() {
MyAdapter myAdapter = new MyAdapter();
vp_img.setOffscreenPageLimit(5);
vp_img.setPageMargin(10);
vp_img.setPageTransformer(false,new MyTransformer());
vp_img.setAdapter(myAdapter);
}
private class MyAdapter extends PagerAdapter {
@Override
public int getCount() {
return imageIds.length;
}
@Override
public boolean isViewFromObject(@NonNull View view, @NonNull Object object) {
return view == object;
}
@NonNull
@Override
public Object instantiateItem(@NonNull ViewGroup container, int position) {
ImageView iv = new ImageView(getApplication());
iv.setImageResource(imageIds[position]);
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(50,50);
iv.setLayoutParams(params);
container.addView(iv);
return iv;
}
@Override
public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
container.removeView((View) object);
}
}
private class MyTransformer implements ViewPager.PageTransformer {
@Override
public void transformPage(@NonNull View page, float position) {
//第一步:中间 哪张 的 position 属于哪个范围把所有值打印出来观察获得
//第二步:根据 观察 结果把区间分好
//第三步:相邻区间保证连贯性
//注意:这里一次性打印多少个 page 是由页面一次显示多少 imageView 决定的
if (position>=1&&position<=2){
page.setScaleY(1.0f + 0.5f*(position-(int)Math.abs(position)));
page.setScaleX(1.0f + 0.5f*(position-(int)Math.abs(position)));
}else if (position<=0||position>=3){
page.setScaleY(0.5f);
page.setScaleX(0.5f);
}else if (position>0&&position<1){
page.setScaleY(0.5f + 0.5f*(position-(int)Math.abs(position)));
### **写在最后**
最后我想说:对于程序员来说,要学习的知识内容、技术有太多太多,要想不被环境淘汰就只有不断提升自己,**从来都是我们去适应环境,而不是环境来适应我们!**
这里附上上述的技术体系图相关的几十套**腾讯、头条、阿里、美团等公司2021年的面试题**,把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含**知识脉络 + 诸多细节**,由于篇幅有限,这里以图片的形式给大家展示一部分。
**相信它会给大家带来很多收获:**
![](https://img-blog.csdnimg.cn/img_convert/156e962cc5d7e78521796127e5b4cfd8.png)
![](https://img-blog.csdnimg.cn/img_convert/2299a1b4b372d7c61d8785b5309b82f5.png)
**[CodeChina开源项目:《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》](https://codechina.csdn.net/m0_60958482/android_p7)**
[外链图片转存中...(img-lcbEBjT3-1631075587658)]
[外链图片转存中...(img-Cwrlu9Gy-1631075587659)]
**[CodeChina开源项目:《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》](https://codechina.csdn.net/m0_60958482/android_p7)**
> 当程序员容易,当一个优秀的程序员是需要不断学习的,从初级程序员到高级程序员,从初级架构师到资深架构师,或者走向管理,从技术经理到技术总监,每个阶段都需要掌握不同的能力。早早确定自己的职业方向,才能在工作和能力提升中甩开同龄人。