今天项目中突然要加上这个功能,我还是翻了一下之前的代码!想了想还是写出来,方便以后看。
1,我们就看一下适配器,也很简单新建Adapter继承自PagerAdapter
package com.example.administrator.airport.Adapter;
import android.content.Context;
import android.support.v4.view.PagerAdapter;
import android.view.View;
import android.view.ViewGroup;
import java.util.List;
/**
* Created by Administrator on 2017/4/27.
*/
public class myadapter extends PagerAdapter {
private List<View> list;
private Context context;
public myadapter(List<View> list, Context context) {
this.list = list;
this.context = context;
}
@Override
public int getCount() {
return list.size();
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view == object;
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
container.addView(list.get(position));
return list.get(position);
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView(list.get(position));
}
}
2,其实这边我是用Xml文件去承载图片的,所以还得新建几个Xml文件去存放图片,当然数据写死的时候也可以不用这样做,我这边主要是为了简便–
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:background="@mipmap/one"
android:layout_margin="20dp"
android:layout_height="200dp">
</LinearLayout>3,最后也是关键的,新建或者打开一个Acticity 这里是在mainfirst_acticity.xml作为程序的主布局文件,在里面加入如下代码
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/colorWhite"
android:orientation="vertical">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="45dp"
android:background="@color/colorTitle">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:text="..."
android:textColor="#fafcfe"
android:textSize="20dp" />
</RelativeLayout>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="@dimen/VFhight"
android:layout_marginLeft="10px"
android:layout_marginRight="10px"
android:layout_marginTop="5px"
android:background="@color/VFColor">
<android.support.v4.view.ViewPager
android:id="@+id/vp_FA"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="2dp"></android.support.v4.view.ViewPager>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="35dip"
android:layout_alignParentBottom="true"
android:layout_gravity="bottom"
android:layout_marginLeft="5px"
android:layout_marginRight="5px"
android:background="#33000000"
android:gravity="bottom"
android:orientation="vertical"
android:weightSum="1">
<TextView
android:textSize="12dip"
android:layout_gravity="center"
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="图片标题"
android:textColor="@android:color/white" />
<RadioGroup
android:layout_marginTop="5px"
android:id="@+id/rg_FA"
android:layout_width="match_parent"
android:layout_height="30px"
android:layout_below="@+id/vp_FA"
android:gravity="center|bottom"
android:orientation="horizontal"
android:layout_weight="0.05"></RadioGroup>
</LinearLayout>
</FrameLayout>
</LinearLayout>4,最后Acticity中 ,写出来就是为了方便以后用到的时候去看看,避免去找代码,,,
package com.example.administrator.airport.Login;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.support.v4.view.ViewPager;
import android.support.v7.widget.CardView;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.view.animation.Animation;
import android.view.animation.ScaleAnimation;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.TextView;
import com.example.administrator.airport.Adapter.myadapter;
import com.example.administrator.airport.BaseActivity;
import com.example.administrator.airport.ChangeAdm.ProjectChangeActivity;
import com.example.administrator.airport.Maillist.MettActivity;
import com.example.administrator.airport.Notices.ChangeActivity;
import com.example.administrator.airport.PersonalCenter.PersonalCenterActivity;
import com.example.administrator.airport.R;
import com.example.administrator.airport.Utils.ZoomOutPageTransformer;
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/10/26 0026.
*/
public class MainFirst_Acticity extends BaseActivity {
private ViewPager vp_FA;
private RadioGroup rg_FA;
private myadapter adapter;
private List<View> userList = new ArrayList<>();
private List<RadioButton> radioButtons;
private ScaleAnimation animation;
private TextView title;
//图片标题的数据暂时写死
private String[]titles=new String[]{
"颜值飙升!焕然一新迎接四方宾客",
"书藏古今、港通天下",
"空港是城市文明程度的直接体现",
"设计理念是“热情、开放、现代、人文”"
};
private ScheduledExecutorService scheduledExecutorService;
private int currentItem;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.mainfirst_acticity);
initView();
//添加数据源(图片)
View view1 = getLayoutInflater().inflate(R.layout.item1, null);
View view2 = getLayoutInflater().inflate(R.layout.item2, null);
View view3 = getLayoutInflater().inflate(R.layout.item3, null);
View view4 = getLayoutInflater().inflate(R.layout.item4, null);
//将图片保存在集合中
userList.add(view3);
userList.add(view4);
userList.add(view1);
userList.add(view2);
Displaydata();
}
private void initView() {
vp_FA = (ViewPager) findViewById(R.id.vp_FA);
rg_FA = (RadioGroup) findViewById(R.id.rg_FA);
title= (TextView) findViewById(R.id.title);
title.setText(titles[0]);//初始化的时候图片标题应该是第一个
//这个动画可以不用加
vp_FA.setPageTransformer(true, new ZoomOutPageTransformer());//VeiwPager的动画
}
//绑定数组源-动态添加小圆点
private void Displaydata() {
if (userList.size() != 0) {
adapter = new myadapter(userList, MainFirst_Acticity.this);
vp_FA.setAdapter(adapter);
}
radioButtons = new ArrayList<>();
for (int i = 0; i < userList.size(); i++) {
if (this != null) {
RadioButton button = new RadioButton(MainFirst_Acticity.this);
if (i == 0) {
button.setButtonDrawable(R.mipmap.image_focus);
} else {
button.setButtonDrawable(R.mipmap.image_in);
}
radioButtons.add(button);
rg_FA.addView(button, ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
}
}
vp_FA.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
title.setText(titles[position]);
for (int i = 0; i < radioButtons.size(); i++) {
if (i == position) {
radioButtons.get(i).setButtonDrawable(R.mipmap.image_focus);
} else {
radioButtons.get(i).setButtonDrawable(R.mipmap.image_in);
}
}
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
}
/**
* 利用线程池定时执行动画轮播
*/
@Override
protected void onStart() {
// TODO Auto-generated method stub
super.onStart();
scheduledExecutorService = Executors.newSingleThreadScheduledExecutor();
scheduledExecutorService.scheduleWithFixedDelay(
new ViewPageTask(), 5, 5, TimeUnit.SECONDS);
}
/**
* 图片轮播任务
* @author liuyazhuang
* 使用保保存图片的视图
*
*/
private class ViewPageTask implements Runnable{
@Override
public void run() {
currentItem = (currentItem + 1) % userList.size();
mHandler.sendEmptyMessage(0);
}
}
/**
* 接收子线程传递过来的数据
*/
private Handler mHandler = new Handler(){
public void handleMessage(android.os.Message msg) {
vp_FA.setCurrentItem(currentItem);
}
};
@Override
protected void onStop() {
// TODO Auto-generated method stub
super.onStop();
if(scheduledExecutorService != null){
scheduledExecutorService.shutdown();
scheduledExecutorService = null;
}
}
}
以上,写的不好,,,
版权声明:本文为qq_36895346原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。