利用ViewPager放置所需投放的广告,并根据View的个数动态生成底部小圆点的个数。
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="vertical"
android:weightSum="5"
tools:context="com.example.advertisement.MainActivity">
<FrameLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="2">
<android.support.v4.view.ViewPager
android:id="@+id/vp"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<LinearLayout
android:id="@+id/ll"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:gravity="center" />
</FrameLayout>
</LinearLayout>
MainActivity.java
package com.example.advertisement;
import android.content.Intent;
import android.net.Uri;
import android.os.Handler;
import android.os.Message;
import android.os.SystemClock;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.LinearLayout;
import java.util.ArrayList;
public class MainActivity extends AppCompatActivity {
private ArrayList<View> list;
private ViewPager vp;
private ImageView[] ivs;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initViews();
initCircle();
vp.setAdapter(new PagerAdapter() {
@Override
public Object instantiateItem(ViewGroup container, int position) { //向ViewPager添加新的Item
container.addView(list.get(position));
return list.get(position);
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {//移除ViewPager旧的Item
container.removeView(list.get(position));
}
@Override
public int getCount() { //Item总数
return list.size();
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view == object;
}
});
vp.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
for (int i = 0; i < list.size(); i++) {
if (i == position)
ivs[i].setImageResource(R.drawable.dhl_yd_checked);
else
ivs[i].setImageResource(R.drawable.dhl_yd_unchecked);
}
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
updateImg();
}
/***
* 获取所有控件
***/
public void initViews() {
list = new ArrayList<>();
vp = (ViewPager) findViewById(R.id.vp);
View v1 = LayoutInflater.from(getApplicationContext()).inflate(R.layout.activity_ad1, null);
View v2 = LayoutInflater.from(getApplicationContext()).inflate(R.layout.activity_ad2, null);
View v3 = LayoutInflater.from(getApplicationContext()).inflate(R.layout.activity_ad3, null);
ImageView img1 = (ImageView) v1.findViewById(R.id.img1);
img1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
intent.setData(Uri.parse("http://www.baidu.com"));
startActivity(intent);
}
});
list.add(v1);
list.add(v2);
list.add(v3);
}
/***
* 动态初始化小圆点
***/
public void initCircle() {
LinearLayout ll = (LinearLayout) findViewById(R.id.ll);
ivs = new ImageView[list.size()];
for (int i = 0; i < list.size(); i++) {
ImageView iv = new ImageView(getApplicationContext());
iv.setLayoutParams(new ViewGroup.LayoutParams(39, 39));
iv.setPadding(5, 0, 5, 0);
ivs[i] = iv;
ll.addView(iv);
if (i == 0)
iv.setImageResource(R.drawable.dhl_yd_checked);
else
iv.setImageResource(R.drawable.dhl_yd_unchecked);
}
}
private Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
vp.setCurrentItem(msg.what);
}
};
/***
* 更新展示图片
***/
public void updateImg() {
new Thread(new Runnable() {
@Override
public void run() {
int i = 1;
while (true) {
SystemClock.sleep(3000);
if (i == list.size())
i = 0;
Message msg = Message.obtain();
msg.what = i;
handler.sendMessage(msg);
i++;
}
}
}).start();
}
}
效果图