freedom_wings3 2016-02-12 10:18 采纳率: 0%
浏览 1438

安卓,可循环滑动的图片,不显示标示哪张图的小点,求大神来帮忙

contentmain.xml:

 <?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent"
    android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    tools:showIn="@layout/activity_main" tools:context=".MainActivity">

    <android.support.v4.view.ViewPager
        android:id="@+id/viewpager"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>

    <LinearLayout
        android:id="@+id/viewgroup"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:layout_gravity="center_horizontal"
        android:layout_marginBottom="10dp"></LinearLayout>
</FrameLayout>

定义点状图标的drawable的xml,以下是选中的,没选中的也就颜色不一样:

 <?xml version="1.0" encoding="utf-8"?>


    <shape
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:color="#ff6666"
        android:shape="ring">

    <corners
        android:radius="20dp"
        />

    </shape>

viewpager是用fragment填充的,fragment里也就一个imageButton,不贴了

以下是MainActivity:

 public class MainActivity extends AppCompatActivity implements ViewPager.OnPageChangeListener {
    List<Fragment> list;
    ViewPager viewPager;
    ViewGroup viewGroup;
    Fragment1 f1=new Fragment1();
    Fragment1 p1=new Fragment1();
    Fragment2 f2=new Fragment2();
    Fragment3 f3=new Fragment3();
    Fragment4 f4=new Fragment4();
    Fragment4 p4=new Fragment4();
    MyAdapter myAdapter;
    ImageView[] imageView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
        fab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
                        .setAction("Action", null).show();
            }
        });
        list=new ArrayList<Fragment>();
        list.add(p4);
        list.add(f1);
        list.add(f2);
        list.add(f3);
        list.add(f4);
        list.add(p1);
        viewPager=(ViewPager)super.findViewById(R.id.viewpager);
        viewGroup=(ViewGroup)super.findViewById(R.id.viewgroup);
        initViewGroup();
        myAdapter=new MyAdapter(getSupportFragmentManager(),list);
        viewPager.setAdapter(myAdapter);
        viewPager.setCurrentItem(1);
        viewPager.setOnPageChangeListener(this);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();

        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings) {
            return true;
        }

        return super.onOptionsItemSelected(item);
    }
    public void initViewGroup()
    {
        imageView=new ImageView[list.size()-3];
        for(int i=0;i<list.size()-3;i++)
        {
            imageView[i] = new ImageView(this);

            if(i==1) imageView[i].setBackgroundResource(R.drawable.select);
            else imageView[i].setBackgroundResource(R.drawable.unselect);
            LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT));
            params.leftMargin = 10;
            params.rightMargin = 10;
            viewGroup.addView(imageView[i], params);
        }
    }

    @Override
    public void onPageScrollStateChanged(int args0)
    {

    }
    public void onPageSelected(int args0)
    {
        int pageIndex=args0;
        if(pageIndex==0)
        {
            pageIndex=list.size()-2;
            imageView[0].setBackgroundResource(R.drawable.unselect);
            imageView[imageView.length-1].setBackgroundResource(R.drawable.select);
        }
        else if(pageIndex==list.size()-1)
        {
            pageIndex=1;
            imageView[imageView.length-1].setBackgroundResource(R.drawable.unselect);
            imageView[0].setBackgroundResource(R.drawable.select);
        }

        if(pageIndex != args0)
        {
            viewPager.setCurrentItem(pageIndex, false);
        }

    }
    public void onPageScrolled(int a1,float a2,int a3)
    {

    }
}

想做那种图片可循环滑动,并且其底部有小点标示是哪张图的效果,现在图片能循环滑,但是不显示小点,希望各位大神帮忙看看

  • 写回答

4条回答

  • freedom_wings3 2016-02-12 10:21
    关注

    补充一句,initViewGroup这个方法是定义小点的,其中R.drawable.select是我上面贴的定义点状的xml

    评论

报告相同问题?

悬赏问题

  • ¥15 应该如何判断含间隙的曲柄摇杆机构,轴与轴承是否发生了碰撞?
  • ¥15 vue3+express部署到nginx
  • ¥20 搭建pt1000三线制高精度测温电路
  • ¥15 使用Jdk8自带的算法,和Jdk11自带的加密结果会一样吗,不一样的话有什么解决方案,Jdk不能升级的情况
  • ¥15 画两个图 python或R
  • ¥15 在线请求openmv与pixhawk 实现实时目标跟踪的具体通讯方法
  • ¥15 八路抢答器设计出现故障
  • ¥15 opencv 无法读取视频
  • ¥15 按键修改电子时钟,C51单片机
  • ¥60 Java中实现如何实现张量类,并用于图像处理(不运用其他科学计算库和图像处理库))