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 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)