Android项目里的图片轮换

代码演示:

1.activity布局,线性布局中套布局

<FrameLayout

    android:layout_width="500dp"
    android:layout_height="250dp"
    >

    <android.support.v4.view.ViewPager
        android:id="@+id/vp"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
//你有几张图片就要几个圆点
    <LinearLayout
        android:layout_marginLeft="10dp"
        android:layout_width="match_parent"
        android:layout_height="35dip"
        android:layout_gravity="bottom"
        android:background="#33000000"
        android:gravity="center"
        android:orientation="vertical" >

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="图片标题"
            android:textColor="@android:color/white"
            android:id="@+id/title_01"
            />

        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="3dip"
            android:orientation="horizontal" >

            <View
                android:id="@+id/dot_0"
                android:layout_width="5dip"
                android:layout_height="5dip"
                android:layout_marginLeft="2dip"
                android:layout_marginRight="2dip"
                android:background="@drawable/dot_focused"/>

            <View
                android:id="@+id/dot_1"
                android:layout_width="5dip"
                android:layout_height="5dip"
                android:layout_marginLeft="2dip"
                android:layout_marginRight="2dip"
                android:background="@drawable/dot_normal"/>
            <View
                android:id="@+id/dot_2"
                android:layout_width="5dip"
                android:layout_height="5dip"
                android:layout_marginLeft="2dip"
                android:layout_marginRight="2dip"
                android:background="@drawable/dot_normal"/>
            <View
                android:id="@+id/dot_3"
                android:layout_width="5dip"
                android:layout_height="5dip"
                android:layout_marginLeft="2dip"
                android:layout_marginRight="2dip"
                android:background="@drawable/dot_normal"/>
            <View
                android:id="@+id/dot_4"
                android:layout_width="5dip"
                android:layout_height="5dip"
                android:layout_marginLeft="2dip"
                android:layout_marginRight="2dip"
                android:background="@drawable/dot_normal"/>


            <View
                android:id="@+id/dot_5"
                android:layout_width="5dip"
                android:layout_height="5dip"
                android:layout_marginLeft="2dip"
                android:layout_marginRight="2dip"
                android:background="@drawable/dot_normal"/>
            <View
                android:id="@+id/dot_6"
                android:layout_width="5dip"
                android:layout_height="5dip"
                android:layout_marginLeft="2dip"
                android:layout_marginRight="2dip"
                android:background="@drawable/dot_normal"/>
            <View
                android:id="@+id/dot_7"
                android:layout_width="5dip"
                android:layout_height="5dip"
                android:layout_marginLeft="2dip"
                android:layout_marginRight="2dip"
                android:background="@drawable/dot_normal"/>

        </LinearLayout>

    </LinearLayout>

</FrameLayout>



2.fragment
package com.example.administrator.myapplication;

import android.app.Dialog;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AlertDialog;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.RadioGroup;
import android.widget.TextView;

import com.example.exam.Exam;

import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;

/**
 * Created by Administrator on 2017/6/20.
 */

public class SecondFragment  extends Fragment {

    //存放图片的id
    private int image[]= new int[]{
            R.drawable.ic_action_01,
            R.drawable.ic_action_02,
            R.drawable.ic,
            R.drawable.ic_action_04,
            R.drawable.ic_action_05,
            R.drawable.ic_action_06,
            R.drawable.ic_action_07,
            R.drawable.ic_action_08
    };
    //存放图片的标题
    private  String titles[]={
            "假自我,让我们无法敞开去爱",
            "爱需要安全感","如果你对爱很困惑",
            "你需要自信的恋爱模式",
            "你需要反省自己的爱",
            "世界上最温暖的三个字...",
            "真正爱你的让你,是怎样的",
            "谈恋爱到底在谈什么?"
    };
    private ViewPager viewPager;
    //图片数组
    private List<ImageView> images;
    //圆点数组
    private List<View> dots;
    private TextView textView;

    //实例化真个布局menu下的布局文件
    private MenuInflater menuInflater;

    //记录上一次点的位置
    private int oldPosition = 0;
    private int currentItem;
    private ScheduledExecutorService scheduledExecutorService;
     @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view=inflater.inflate(R.layout.fragment_second,null);
        viewPager = view.findViewById(R.id.vp);
        //显示的图片
        images = new ArrayList<ImageView>();
        for (int i = 0; i < image.length; i++) {
            ImageView imageView=new ImageView(getActivity());
            imageView.setBackgroundResource(image[i]);
            images.add(imageView);
        }
        //显示的小点
        dots = new ArrayList<View>();
        dots.add(view.findViewById(R.id.dot_0));
        dots.add(view.findViewById(R.id.dot_1));
        dots.add(view.findViewById(R.id.dot_2));
        dots.add(view.findViewById(R.id.dot_3));
        dots.add(view.findViewById(R.id.dot_4));
        dots.add(view.findViewById(R.id.dot_5));
        dots.add(view.findViewById(R.id.dot_6));
        dots.add(view.findViewById(R.id.dot_7));

         ViewPagerAdapter adapter=new ViewPagerAdapter();
        viewPager.setAdapter(adapter);

       
        //设置改变监听事件
        viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

            }

            @Override
            public void onPageSelected(int position) {
                textView.setText(titles[position]);
                dots.get(position).setBackgroundResource(R.drawable.dot_focused);
                dots.get(oldPosition).setBackgroundResource(R.drawable.dot_normal);
                oldPosition = position;
                currentItem = position;
            }

            @Override
            public void onPageScrollStateChanged(int state) {

            }
        });
        return view;
    }

    /**
     * 自定义adapter
     */
       private  class ViewPagerAdapter extends PagerAdapter{

           @Override
           public int getCount() {
               return images.size();
           }

           @Override
           public boolean isViewFromObject(View view, Object object) {
               return view==object;
           }
           @Override
           public void destroyItem(ViewGroup view, int position, Object object) {
               // TODO Auto-generated method stub
//       super.destroyItem(container, position, object);
//       view.removeView(view.getChildAt(position));
//       view.removeViewAt(position);
               view.removeView(images.get(position));
           }

           @Override
           public Object instantiateItem(ViewGroup view, int position) {
               // TODO Auto-generated method stub
               view.addView(images.get(position));
               return images.get(position);
           }

       }

    @Override
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
//        super.onCreateOptionsMenu(menu, inflater);
        getMenuInflater().inflate(R.menu.main, menu);
    }

    public MenuInflater getMenuInflater()
    {
        return menuInflater;
    }

    /**
     * 利用线程池定时执行动画轮播
     */
    @Override
    public void onStart() {
        // TODO Auto-generated method stub
        super.onStart();
        scheduledExecutorService = Executors.newSingleThreadScheduledExecutor();
        scheduledExecutorService.scheduleWithFixedDelay(
                new ViewPageTask(),
                2,
                2,
                TimeUnit.SECONDS);
    }


    private class ViewPageTask implements Runnable{

        @Override
        public void run() {
            currentItem = (currentItem + 1) % image.length;
            mHandler.sendEmptyMessage(0);
        }

       }
    /**
     * 接收子线程传递过来的数据
     */
    private Handler mHandler = new Handler(){
        public void handleMessage(android.os.Message msg) {
            viewPager.setCurrentItem(currentItem);
        };
    };
    @Override
    public void onStop() {
        // TODO Auto-generated method stub
        super.onStop();
    }

    


}




2.还有两个在drawable文件下的两个布局文件

  
(1)<?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>

(2) <?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>


3.一个menu文件夹下
 
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:id="@+id/action_settings"
        android:orderInCategory="100"
        android:title="@string/action_settings"/>
</menu>

4.vaules文件夹下
 
<resources>
    <string name="app_name">尤爱而生</string>
    <string name="action_settings">Settings</string>
</resources>




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值