80,351
社区成员
发帖
与我相关
我的任务
分享
package ad;
import java.util.ArrayList;
import java.util.List;
import android.content.Context;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.util.AttributeSet;
import android.util.DisplayMetrics;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.ImageView.ScaleType;
import android.widget.LinearLayout;
import com.winton.baseview.R;
public class AdShowContainer extends LinearLayout{
private ViewPager adParent;
private Context mContext;
List<ImageView> adList;
public AdShowContainer(Context context){
super(context);
mContext=context;
}
public AdShowContainer(Context context ,AttributeSet attrs){
super(context, attrs);
mContext=context;
}
public AdShowContainer(Context context,AttributeSet attrs,int defStyle){
super(context,attrs,defStyle);
mContext=context;
LayoutInflater.from(context).inflate(R.layout.layout_show_ad, this, true);
adParent=new ViewPager(mContext);
DisplayMetrics dm = getResources().getDisplayMetrics();
adParent.setLayoutParams(new LayoutParams(dm.widthPixels, dm.heightPixels * 2 / 5));
initData();
this.addView(adParent);
}
public void initData(){
adList=new ArrayList<ImageView>();
int[] imageResource={
R.drawable.ad1,
R.drawable.ad1,
R.drawable.ad1
};
for(int imageId:imageResource){
ImageView ad=new ImageView(mContext);
ad.setImageResource(imageId);
ad.setScaleType(ScaleType.FIT_XY);
adList.add(ad);
}
adParent.setFocusable(true);
adParent.setAdapter(new myViewPagerAdapter());
adParent.setCurrentItem(0);
}
private class myViewPagerAdapter extends PagerAdapter{
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
// TODO Auto-generated method stub
container.removeView(adList.get(position));
}
@Override
public void finishUpdate(ViewGroup container) {
// TODO Auto-generated method stub
super.finishUpdate(container);
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return adList==null?0:adList.size();
}
@Override
public int getItemPosition(Object object) {
// TODO Auto-generated method stub
return super.getItemPosition(object);
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
// TODO Auto-generated method stub
container.addView(adList.get(position));
return adList.get(position);
}
@Override
public boolean isViewFromObject(View arg0, Object arg1) {
// TODO Auto-generated method stub
return arg0==arg1;
}
}
}
<RelativeLayout 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"
>
<ad.AdShowContainer
android:id="@+id/ad"
android:layout_width="match_parent"
android:layout_height="120dp"
android:layout_alignParentTop="true"
android:layout_marginBottom="2dp"
android:layout_centerHorizontal="true"
android:background="@color/black" />
</RelativeLayout>
import java.util.ArrayList;
import java.util.List;
import android.content.Context;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.util.AttributeSet;
import android.util.DisplayMetrics;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.ImageView.ScaleType;
import android.widget.LinearLayout;
public class AdShowContainer extends LinearLayout{
private ViewPager adParent;
private Context mContext;
List<ImageView> adList;
public AdShowContainer(Context context){
this(context, null);
// mContext=context;
}
public AdShowContainer(Context context ,AttributeSet attrs){
this(context, attrs, 0);
// mContext=context;
}
public AdShowContainer(Context context,AttributeSet attrs,int defStyle){
super(context,attrs,defStyle);
mContext=context;
// LayoutInflater.from(context).inflate(R.layout.layout_show_ad, this, true);
adParent=new ViewPager(mContext);
DisplayMetrics dm = getResources().getDisplayMetrics();
adParent.setLayoutParams(new LayoutParams(dm.widthPixels, dm.heightPixels * 2 / 5));
initData();
this.addView(adParent);
}
public void initData(){
adList=new ArrayList<ImageView>();
// TODO 修改回你自己的图片
int[] imageResource={
R.drawable.go_back_normal,
R.drawable.go_refresh_press,
R.drawable.go_forward_normal
};
for(int imageId:imageResource){
ImageView ad=new ImageView(mContext);
ad.setImageResource(imageId);
ad.setScaleType(ScaleType.FIT_XY);
adList.add(ad);
}
adParent.setFocusable(true);
adParent.setAdapter(new myViewPagerAdapter());
adParent.setCurrentItem(0);
}
private class myViewPagerAdapter extends PagerAdapter{
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
// TODO Auto-generated method stub
container.removeView(adList.get(position));
}
@Override
public void finishUpdate(ViewGroup container) {
// TODO Auto-generated method stub
super.finishUpdate(container);
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return adList==null?0:adList.size();
}
@Override
public int getItemPosition(Object object) {
// TODO Auto-generated method stub
return super.getItemPosition(object);
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
// TODO Auto-generated method stub
container.addView(adList.get(position));
return adList.get(position);
}
@Override
public boolean isViewFromObject(View arg0, Object arg1) {
// TODO Auto-generated method stub
return arg0==arg1;
}
}
}
效果图,只能看到图片的一部分,调整一下ImageView的配置就好了,如果还不能显示ViewPager,检查一下你图片是不是上半部分没有东西或者AdShowContainer 这个View是不是被其他的组件盖遮住了。
public AdShowContainer(Context context){
this(context, null);
}
public AdShowContainer(Context context ,AttributeSet attrs){
this(context, attrs, 0);
}
public AdShowContainer(Context context,AttributeSet attrs,int defStyle){
super(context,attrs,defStyle);
mContext = context;
// 这句不知道干嘛的,没什么用,给你注释掉了
// LayoutInflater.from(context).inflate(R.layout.layout_show_ad, this,
// true);
adParent=new ViewPager(mContext);
DisplayMetrics dm = getResources().getDisplayMetrics();
adParent.setLayoutParams(new LayoutParams(dm.widthPixels, dm.heightPixels * 2 / 5));
initData();
this.addView(adParent);
}