• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >Android > 自定义图片轮播框架。也是作为依赖库使用的哦,自定义框架

自定义图片轮播框架。也是作为依赖库使用的哦,自定义框架

作者:网友 字体:[增加 减小] 来源:互联网 时间:2017-05-26

网友通过本文主要向大家介绍了自定义框架,自定义mvc框架,java自定义框架,自定义mvc框架的步骤,php自定义框架等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

自定义图片轮播框架。也是作为依赖库使用的哦,自定义框架


图片的轮播,我相信大家都在熟悉不过了 ,对吧。今天在这里发表一下自己的见解。。。

也是从继承LineaLayout开始。。。

话不多说 。上代码咯  

package com.weight.adscrollviewlib;

import java.util.ArrayList;
import java.util.Timer;
import java.util.TimerTask;

import android.content.Context;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.util.AttributeSet;
import android.util.Log;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.ImageView;
import android.widget.LinearLayout;

import com.weight.adscrollviewlib.entity.Ad;

public class AdScrollLayout extends LinearLayout {
ArrayList<Integer> bitMapData = new ArrayList<Integer>();
ArrayList<View> bitValue = new ArrayList<View>();
ArrayList<ImageView> imgData = new ArrayList<ImageView>();
ViewPager myViewPage;
LinearLayout myImgState;// 状态的显示容器
Timer timer;
TimerTask task;
int index = 0; // 当前页面的具体的滑动的位置
int stateImgNormal;
int stateImgSelect;

public AdScrollLayout(Context context, AttributeSet attrs) {
super(context, attrs);
initView();

}

public AdScrollLayout(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
initView();
}

public AdScrollLayout(Context context) {
super(context);
initView();
}

/**
*
* @param content
* :图片的内容
* @param normalBitMap
* :正常情况下显示的图片
* @param selectBitMap
* :选择情况下显示的图片
*/
public void addImageAndBitMapState(ArrayList<Ad> content, int normalBitMap,
int selectBitMap) {
stateImgNormal = normalBitMap;
stateImgSelect = selectBitMap;
LayoutInflater inflater = LayoutInflater.from(getContext());
for (int i = 0; i < content.size(); i++) {
ImageView imageView = null;
if (i == 0) {
imageView = new ImageView(getContext());
imageView.setBackgroundResource(selectBitMap);
} else {
imageView = new ImageView(getContext());
imageView.setBackgroundResource(normalBitMap);
}
myImgState.setGravity(Gravity.CENTER);
LayoutParams params = new LinearLayout.LayoutParams(8, 8);
params.leftMargin = 10;
myImgState.addView(imageView, params);
imgData.add(imageView);

}
// 下面的这一个主要是对数据重构
for (int i = 0; i < content.size(); i++) {
View view = inflater.inflate(R.layout.ad_scroll_item, null);
view.findViewById(R.id.adImg).setBackgroundResource(
content.get(i).getImg());
bitValue.add(view);
}
myViewPage.setAdapter(new MyAdapter());
setPageFromTime(3000);
}

/**
*
* @Title: initView
* @Description: 初始化布局页面
* @param
* @return
* @throws
*/
private void initView() {
LayoutInflater inflater = LayoutInflater.from(getContext());
View view = inflater.inflate(R.layout.ad_scroll, this);
findView(view);
myViewPage.setOnPageChangeListener(new MyPageChangeLister());
}

/**
* 页面的滑动监听
*
* @author Administrator
*
*/
private class MyPageChangeLister implements OnPageChangeListener {
@Override
public void onPageScrollStateChanged(int arg0) {
}

@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {

}

@Override
public void onPageSelected(int id) {
index = id;
// Log.e("arg0", id + "");

hand();
}
}

/**
* ViewPager的适配器
*
* @author Administrator
*
*/
private class MyAdapter extends PagerAdapter {
@Override
public int getCount() {
return bitValue.size();
}

@Override
public boolean isViewFromObject(View view, Object obj) {
return view == obj;
}

@Override
public void destroyItem(View container, int position, Object object) {
((ViewPager) container).removeView(bitValue.get(position));
}

@Override
public Object instantiateItem(View container, int position) {
((ViewPager) container).addView(bitValue.get(position));
return bitValue.get(position);
}
}

/**
*
* @Title: findView
* @Description: 找控件
* @param @param view
* @return
* @throws
*/
private void findView(View view) {
myViewPage = (ViewPager) view.findViewById(R.id.myViewPage);
myImgState = (LinearLayout) view.findViewById(R.id.myImgState);
}

// 需要一个方法:通过时间来动态的使用ViewPage最终实现页面的一个切换功能

public void setPageFromTime(int delayTime) {
timer = new Timer();
task = new TimerTask() {
@Override
public void run() {
// 业务逻辑
hand();
index++;
if (index == imgData.size()) {
index = 0;
}
}
};
timer.schedule(task, delayTime, delayTime);
}

/**
*
* @Title: hand
* @Description: handle发送数据
* @param
* @return
* @throws
*/
protected void hand() {
Bundle bundle = new Bundle();
bundle.putInt("index", index);
Message msg = new Message();
msg.setData(bundle);
msg.what = 100;
handler.sendMessage(msg);
}

Handler handler = new Handler() {
public void handleMessage(android.os.Message msg) {
switch (msg.what) {
case 100:
int index = msg.getData().getInt("index");
initPic(index);
break;
}

}
};

/**
*
* @Title: initPic
* @Description: 定时的更新页面
* @param @param index2:当前页面应该更新的一个位置
* @return
* @throws
*/
protected void initPic(int index2) {
myViewPage.setCurrentItem(index2);
changeImage(index2);
}

/**
* 传递一个id过来
*
* @param id
*/
public void changeImage(int id) {
for (int i = 0; i < imgData.size(); i++) {
if (id == i) {
imgData.get(i).setBackgroundResource(stateImgSelect);
} else {
imgData.get(i).setBackgroundResource(stateImgNormal);
}
}
}

public ViewPager getViewPage() {
return myViewPage;
}

}

这就是自定义的代码 ,其实很简单的 。。 

做做好事。。  实代码全部给你们

package com.weight.adscrollviewlib.entity;

/**
* 广告这个实体
*
* @author Administrator
*
*/
public class Ad {
private int img; // 广告的内容图片

public Ad(int img) {
this.img = img;
}

public Ad() {
}

public int getImg() {
return img;
}

public void setImg(int img) {
this.img = img;
}
}

然后 这部分就好了  要源码的伙伴们。。 可以找我哦。。。

源码地址:链接:http://pan.baidu.com/s/1nvoyQbJ  密码:y375

 

使用它 要作为依赖库的哟。。

 

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 自定义图片轮播框架。也是作为依赖库使用的哦,自定义框架

相关文章

  • 2017-05-26Android版本和API Level对应关系,androidlevel
  • 2017-05-26Android中自定义视图View之---进阶篇(Canvas的使用)
  • 2017-07-23hellocharts-android-Android图表开源库的使用(二)
  • 2017-08-02【玖哥乱弹】Android初学路上会遇到的瓶颈
  • 2017-05-26整理几篇比较好的AndroidUI动画开发文章,几篇androidui
  • 2017-05-26Android 接入 OpenCV库的三种方式,androidopencv
  • 2017-05-26实现图片拖动,图片拖动
  • 2017-05-26Andriod中自定义Dialog样式的Activity点击空白处隐藏软件盘(Dialog不消失),andrioddialog
  • 2017-05-26Handler消息传递机制(二)Handler,Loop,Message,MessageQueue的工作原理
  • 2017-05-26App启动页倒计时功能,app启动倒计时

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • Adroid: getExternalStorageDirectory 不一定是你想要的外部存储SdCard,adroidsdcard
    • Google官方MVP模式示例项目解析 todo-mvp,mvptodo-mvp
    • Linux内核系列—8.操作系统开发之时钟中断,linux内核
    • Android逆向之旅---解析编译之后的Dex文件格式
    • linux syslog日志服务器的搭建
    • 7.6.1 Socket学习网络基础准备
    • ubuntu下安装AndroidStudio
    • Android之DOM解析XML,androiddomxml
    • 一个现代化的JSON库Moshi针对Android和Java,jsonandroid
    • 二维码的扫描和生成--第三方开源--ZXing,--第三方开源--zxing

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有