Android------广告条

来源:互联网 发布:软件 应用生态 编辑:程序博客网 时间:2024/06/10 12:33

在程序drawable下:

             ---- point_background.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:drawable="@drawable/point_enable" android:state_enabled="true"></item>
    <item android:drawable="@drawable/point_normal" android:state_enabled="false"></item>

</selector>


======================绘制图形

point_enable.xml


<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="oval">
    
    <corners android:radius="5dip"/>
    
    <solid android:color="#aaFFFFFF"/>
</shape>

====================绘制圆点

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="oval">
    
    <corners android:radius="5dip"/>
     
    <solid android:color="#55000000"/>
</shape>

package com.example.viewpage;import java.util.ArrayList;import java.util.List;import android.app.Activity;import android.os.Bundle;import android.support.v4.view.PagerAdapter;import android.support.v4.view.ViewPager;import android.support.v4.view.ViewPager.OnPageChangeListener;import android.view.View;import android.view.ViewGroup;import android.widget.ImageView;import android.widget.LinearLayout;import android.widget.LinearLayout.LayoutParams;import android.widget.TextView;public class MainActivity extends Activity implements OnPageChangeListener{private List<ImageView> listImageViews;private String[] imageDescrptions;private LinearLayout llPoints;private TextView tvTitle;private ViewPager mViewPager;private int previousPostion=0;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);init();}private void init(){mViewPager = (ViewPager) findViewById(R.id.viewpager);llPoints = (LinearLayout) findViewById(R.id.ll_points);tvTitle = (TextView) findViewById(R.id.tv_title);listImageViews = new ArrayList<ImageView>();//初始化图片的ID,图片的文本int[] imageResIDs=getImageResIDs();imageDescrptions=getImageDescriptions();ImageView mImageView;View view;LayoutParams lp;for (int i = 0; i < imageResIDs.length; i++) {mImageView = new ImageView(this);mImageView.setImageResource(imageResIDs[i]);listImageViews.add(mImageView);//每次循环一次添加一个点view=new View(this);view.setBackgroundResource(R.drawable.point_background);lp= new LayoutParams(5,5);lp.leftMargin = 5 ;view.setLayoutParams(lp);view.setEnabled(false);llPoints.addView(view);}mViewPager.setAdapter(new ViewPagerAdatper());int item=Integer.MAX_VALUE/2; mViewPager.setCurrentItem(item);mViewPager.setOnPageChangeListener(this);llPoints.getChildAt(0).setEnabled(true);tvTitle.setText(imageDescrptions[0]);previousPostion = item % listImageViews.size();}/** * 封装图片id */public int[] getImageResIDs(){return new int[]{R.drawable.a,R.drawable.b,R.drawable.c,R.drawable.d,R.drawable.e};}public String [] getImageDescriptions(){return new String[]{"1111111111111111111","2222222222222222222","3333333333333333333"};}/** *ViewPagerAdapter * */public class ViewPagerAdatper  extends PagerAdapter{/** * viewpager的长度 */@Overridepublic int getCount() {//return listImageViews.size();return Integer.MAX_VALUE;}/** * 判断滑动的控件和将要显示的控件是否为同一个 * true 直接复用 * false 会调用instantiateItem 得到一个新的对象 */@Overridepublic boolean isViewFromObject(View arg0, Object arg1) {return arg0 == arg1;}/** * 移除ImageView对象 */@Overridepublic void destroyItem(ViewGroup container, int position, Object object) {//container.removeView(listImageViews.get(position));mViewPager.removeView(listImageViews.get(position % listImageViews.size()));}/** * 得到一个Object对象就是ImageView */@Overridepublic Object instantiateItem(ViewGroup container, int position) {//container.addView(listImageViews.get(position));//return listImageViews.get(position);// 需要把imageView加到ViewPager中, 把imageView对象返回给上一层mViewPager.addView(listImageViews.get(position % listImageViews.size()));return listImageViews.get(position % listImageViews.size());}}@Overridepublic void onPageScrollStateChanged(int arg0) {}@Overridepublic void onPageScrolled(int arg0, float arg1, int arg2) {}/** * 将要出来的item的索引是-1 或者 大于等于 viewpage.getCount() * 不会切换item */@Overridepublic void onPageSelected(int position) {int realPosition = position % listImageViews.size();if(imageDescrptions.length>realPosition){// 切换文本显示的内容tvTitle.setText(imageDescrptions[realPosition]);}// 切换点的状态llPoints.getChildAt(realPosition).setEnabled(true);// 把前一个的点置为falsellPoints.getChildAt(previousPostion).setEnabled(false);previousPostion = realPosition;}}

效果图:



0 0
原创粉丝点击