Android语言用实现广告页轮播、打造卡片切换、卡片缩放动画的代码
时间: 2023-11-15 17:04:08 浏览: 98
以下是Android语言实现广告页轮播、打造卡片切换、卡片缩放动画的代码示例:
1. 广告页轮播
```
public class MainActivity extends AppCompatActivity {
private ViewPager viewPager;
private List<ImageView> imageList;
private int[] imageIds = {R.drawable.ad1, R.drawable.ad2, R.drawable.ad3};
private List<View> dotList;
private int currentItem = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
initDot();
viewPager.setAdapter(new MyPagerAdapter());
viewPager.setCurrentItem(Integer.MAX_VALUE / 2 - Integer.MAX_VALUE / 2 % imageIds.length);
viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
int newPosition = position % imageList.size();
for (int i = 0; i < dotList.size(); i++) {
if (i == newPosition) {
dotList.get(i).setBackgroundResource(R.drawable.dot_selected);
} else {
dotList.get(i).setBackgroundResource(R.drawable.dot_normal);
}
}
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
new Thread(new Runnable() {
@Override
public void run() {
while (true) {
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
currentItem++;
runOnUiThread(new Runnable() {
@Override
public void run() {
viewPager.setCurrentItem(viewPager.getCurrentItem() + 1);
}
});
}
}
}).start();
}
private void initView() {
viewPager = findViewById(R.id.viewPager);
imageList = new ArrayList<>();
for (int i = 0; i < imageIds.length; i++) {
ImageView imageView = new ImageView(this);
imageView.setImageResource(imageIds[i]);
imageList.add(imageView);
}
}
private void initDot() {
LinearLayout dotLayout = findViewById(R.id.dotLayout);
dotList = new ArrayList<>();
for (int i = 0; i < imageIds.length; i++) {
View dotView = new View(this);
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(20, 20);
layoutParams.leftMargin = 10;
layoutParams.rightMargin = 10;
dotView.setLayoutParams(layoutParams);
if (i == 0) {
dotView.setBackgroundResource(R.drawable.dot_selected);
} else {
dotView.setBackgroundResource(R.drawable.dot_normal);
}
dotLayout.addView(dotView);
dotList.add(dotView);
}
}
private class MyPagerAdapter extends PagerAdapter {
@Override
public int getCount() {
return Integer.MAX_VALUE;
}
@Override
public boolean isViewFromObject(@NonNull View view, @NonNull Object object) {
return view == object;
}
@NonNull
@Override
public Object instantiateItem(@NonNull ViewGroup container, int position) {
ImageView imageView = imageList.get(position % imageList.size());
container.addView(imageView);
return imageView;
}
@Override
public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
container.removeView((View) object);
}
}
}
```
2. 卡片切换
```
public class MainActivity extends AppCompatActivity {
private ViewPager viewPager;
private List<View> viewList;
private int[] imageIds = {R.drawable.card1, R.drawable.card2, R.drawable.card3};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
viewPager.setAdapter(new MyPagerAdapter());
viewPager.setPageTransformer(true, new ZoomOutPageTransformer());
}
private void initView() {
viewPager = findViewById(R.id.viewPager);
viewList = new ArrayList<>();
for (int i = 0; i < imageIds.length; i++) {
View view = LayoutInflater.from(this).inflate(R.layout.item_viewpager, null);
ImageView imageView = view.findViewById(R.id.imageView);
imageView.setImageResource(imageIds[i]);
viewList.add(view);
}
}
private class MyPagerAdapter extends PagerAdapter {
@Override
public int getCount() {
return viewList.size();
}
@Override
public boolean isViewFromObject(@NonNull View view, @NonNull Object object) {
return view == object;
}
@NonNull
@Override
public Object instantiateItem(@NonNull ViewGroup container, int position) {
View view = viewList.get(position);
container.addView(view);
return view;
}
@Override
public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
container.removeView((View) object);
}
}
private class ZoomOutPageTransformer implements ViewPager.PageTransformer {
private static final float MIN_SCALE = 0.85f;
private static final float MIN_ALPHA = 0.5f;
@Override
public void transformPage(@NonNull View page, float position) {
int pageWidth = page.getWidth();
int pageHeight = page.getHeight();
if (position < -1) {
page.setAlpha(0f);
} else if (position <= 1) {
float scaleFactor = Math.max(MIN_SCALE, 1 - Math.abs(position));
float vertMargin = pageHeight * (1 - scaleFactor) / 2;
float horzMargin = pageWidth * (1 - scaleFactor) / 2;
if (position < 0) {
page.setTranslationX(horzMargin - vertMargin / 2);
} else {
page.setTranslationX(-horzMargin + vertMargin / 2);
}
page.setScaleX(scaleFactor);
page.setScaleY(scaleFactor);
page.setAlpha(MIN_ALPHA + (scaleFactor - MIN_SCALE) / (1 - MIN_SCALE) * (1 - MIN_ALPHA));
} else {
page.setAlpha(0f);
}
}
}
}
```
3. 卡片缩放动画
```
public class MainActivity extends AppCompatActivity {
private CardView cardView1, cardView2, cardView3;
private TextView textView1, textView2, textView3;
private boolean isCard1Expanded = false;
private boolean isCard2Expanded = false;
private boolean isCard3Expanded = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
initListener();
}
private void initView() {
cardView1 = findViewById(R.id.cardView1);
cardView2 = findViewById(R.id.cardView2);
cardView3 = findViewById(R.id.cardView3);
textView1 = findViewById(R.id.textView1);
textView2 = findViewById(R.id.textView2);
textView3 = findViewById(R.id.textView3);
}
private void initListener() {
cardView1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (isCard1Expanded) {
isCard1Expanded = false;
textView1.setVisibility(View.GONE);
cardView1.animate().scaleX(1.0f).scaleY(1.0f).setDuration(500).start();
} else {
isCard1Expanded = true;
textView1.setVisibility(View.VISIBLE);
cardView1.animate().scaleX(1.2f).scaleY(1.2f).setDuration(500).start();
}
}
});
cardView2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (isCard2Expanded) {
isCard2Expanded = false;
textView2.setVisibility(View.GONE);
cardView2.animate().scaleX(1.0f).scaleY(1.0f).setDuration(500).start();
} else {
isCard2Expanded = true;
textView2.setVisibility(View.VISIBLE);
cardView2.animate().scaleX(1.2f).scaleY(1.2f).setDuration(500).start();
}
}
});
cardView3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (isCard3Expanded) {
isCard3Expanded = false;
textView3.setVisibility(View.GONE);
cardView3.animate().scaleX(1.0f).scaleY(1.0f).setDuration(500).start();
} else {
isCard3Expanded = true;
textView3.setVisibility(View.VISIBLE);
cardView3.animate().scaleX(1.2f).scaleY(1.2f).setDuration(500).start();
}
}
});
}
}
```
阅读全文
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![-](https://img-home.csdnimg.cn/images/20241231044955.png)
![-](https://img-home.csdnimg.cn/images/20241231044955.png)
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![-](https://img-home.csdnimg.cn/images/20241231044930.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)