当前位置: 首页 > news >正文

竞拍网站做烂了百度网站建设中心

竞拍网站做烂了,百度网站建设中心,安福县住房和城乡建设局网站,网络营销的缺点及建议简介 一个通用的图片轮播效果的通用组件#xff0c;方便开发者快速集成。 初学者#xff0c;其实应该实现一个自定义控件的#xff0c;改天有空#xff0c;在学习下吧#xff0c;学习能力一般#xff0c;以前也没写过java#xff0c;这个组件都写了好久#xff0c;惭愧…简介 一个通用的图片轮播效果的通用组件方便开发者快速集成。 初学者其实应该实现一个自定义控件的改天有空在学习下吧学习能力一般以前也没写过java这个组件都写了好久惭愧啊。 背景 笔者参考http://blog.csdn.net/allen315410/article/details/39294343 学习了图片轮播效果的实现。在浏览代码的过程中总觉得图片轮播的效果和Android Activity的耦合过高如果一个开发者要集成该功能会将整个功能代码和自己的App代码搅在一起提高代码的复杂度。同时图片和图片文字描述存放在两个独立的ArrayList这样的对应关系要由开发者手动维护时刻关注对应关系正确性。 为什么需要组件组件开发的目的即让开发者用最少的代码调用最少的接口实现开发者的需求。 以上的描述是笔者对组件概念的最基本的认识也是基于该原则笔者基于http://blog.csdn.net/allen315410/article/details/39294343 进行了重构实现了一个相对内聚的组件。 图片轮播的要素 如果一个开发者需要开发一个图片轮播的功能开发者最少需要提供的元素有哪些 轮播的图片元素每个图片对应的文字描述轮播图片在布局中的位置图片描述在布局中的位置图片轮播的时间间隔 理论上讲开发者只需要提高以上几个元素即可剩下的就有组件完成吧。基于以上思路开发者大概只需要完成类似代码即可 public class MainActivity extends Activity {//提供一个ViewPagerItem类型数组ViewPagerItem包括了图片信息和图片对应描述信息采用一一对应的方式方便维护private ViewPagerItem[] viewPagerItem new ViewPagerItem[] {new ViewPagerItem(R.drawable.a, 0图片描述信息0),new ViewPagerItem(R.drawable.b, 1图片描述信息1),new ViewPagerItem(R.drawable.c, 2图片描述信息2),new ViewPagerItem(R.drawable.d, 3图片描述信息3),new ViewPagerItem(R.drawable.e, 4图片描述信息4),new ViewPagerItem(R.drawable.e, 5图片描述信息5),};private ViewPagerShow mViewPagerShow;Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//提供一个layout布局容器用来指定图片展示的位置LinearLayout container (LinearLayout) findViewById(R.id.dot_container);//new一个ViewPagerShow提供相应参数mViewPagerShow new ViewPagerShow(viewPagerItem, this, (ViewPager)findViewById(R.id.vp), mHandler,(TextView)findViewById(R.id.title), container);}Overrideprotected void onStart() {// TODO Auto-generated method stubsuper.onStart();}/*** 接收子线程传递过来的数据调用ViewPagerShow提供的update方法实现ui的更新*/private Handler mHandler new Handler(){public void handleMessage(android.os.Message msg) {mViewPagerShow.update();};};Overrideprotected void onStop() {// TODO Auto-generated method stubsuper.onStop();} }浏览以上代码不难发现该功能的加入对开发者原有的代码的侵入范围不是很大。 用尽量少的代码完成功能需求是软件开发人员不断的追求。 轮播组件的实现 下面附上图片轮播效果组件的代码实现 package com.example.image.view;import android.content.Context; import android.os.Handler; import android.support.annotation.Nullable; import android.support.v4.view.PagerAdapter; import android.support.v4.view.ViewPager; import android.util.AttributeSet; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView;import java.util.ArrayList; import java.util.List; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit;import static android.content.ContentValues.TAG;/*** Created by image on 2017/7/14.*/class ViewPagerItem {public int iMageId;public String iMageTitle;public ViewPagerItem(int iMageId, String iMageTitle) {this.iMageId iMageId;this.iMageTitle iMageTitle;} }class ViewPagerAdapter extends PagerAdapter {private ListImageView iMageViews;public ViewPagerAdapter(ListImageView iMageViews) {this.iMageViews iMageViews;}Overridepublic int getCount() {return iMageViews.size();}Overridepublic boolean isViewFromObject(View arg0, Object arg1) {return arg0 arg1;}Overridepublic void destroyItem(ViewGroup view, int position, Object object) {// TODO Auto-generated method stubview.removeView(iMageViews.get(position));}Overridepublic Object instantiateItem(ViewGroup view, int position) {// TODO Auto-generated method stubview.addView(iMageViews.get(position));return iMageViews.get(position);} }class cloneView extends View {public cloneView(Context context) {super(context);}public cloneView(Context context, Nullable AttributeSet attrs) {super(context, attrs);}public cloneView(Context context, Nullable AttributeSet attrs, int defStyleAttr) {super(context, attrs, defStyleAttr);}public cloneView(Context context, Nullable AttributeSet attrs, int defStyleAttr, int defStyleRes) {super(context, attrs, defStyleAttr, defStyleRes);}public Object clone(){Object onull;try {osuper.clone();} catch (CloneNotSupportedException e) {e.printStackTrace();}return o;} }class ViewPagerShow {private ArrayListView dots;private ViewPagerItem[] viewPagerItem;private ListImageView iMagesList;private Context context;private ViewPagerAdapter mViewPagerAdapter;private ViewPager mViewPager;private ScheduledExecutorService scheduledExecutorService;private Handler mHandler;private int currentItem 0;private TextView titleText;private LinearLayout container;private View dot_focus, dot_unfocus;private class ViewPageTask implements Runnable{Overridepublic void run() {currentItem (currentItem 1) % viewPagerItem.length;mHandler.sendEmptyMessage(0);};}public void dotUpdate() {container.removeAllViews();View view;for (int i 0; i this.viewPagerItem.length; i) {if (i currentItem) {view LayoutInflater.from(context).inflate(R.layout.dot_focus, null);container.addView(view);} else {view LayoutInflater.from(context).inflate(R.layout.dot_unfocus, null);container.addView(view);}}}public ViewPagerShow(final ViewPagerItem[] viewPagerItem, Context context, ViewPager mViewPager, Handler mHandler,final TextView titleText, LinearLayout container) {this.viewPagerItem viewPagerItem;this.context context;this.mViewPager mViewPager;this.mHandler mHandler;this.titleText titleText;this.container container;this.dot_focus dot_focus;this.dot_unfocus dot_unfocus;/* show first pic title */titleText.setText(viewPagerItem[0].iMageTitle);iMagesList new ArrayListImageView();for (int i 0; i this.viewPagerItem.length; i) {ImageView imageView new ImageView(context);imageView.setBackgroundResource(viewPagerItem[i].iMageId);imageView.setOnClickListener(new View.OnClickListener() {Overridepublic void onClick(View v) {// TODO Auto-generated method stubLog.d(TAG, onClick: onClick);;}});iMagesList.add(imageView);}dotUpdate();mViewPagerAdapter new ViewPagerAdapter(iMagesList);mViewPager.setAdapter(mViewPagerAdapter);mViewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {Overridepublic void onPageSelected(int position) {titleText.setText(viewPagerItem[position].iMageTitle);currentItem position;dotUpdate();}Overridepublic void onPageScrolled(int arg0, float arg1, int arg2) {}Overridepublic void onPageScrollStateChanged(int arg0) {}});scheduledExecutorService Executors.newSingleThreadScheduledExecutor();scheduledExecutorService.scheduleWithFixedDelay(new ViewPageTask(), 5, 5, TimeUnit.SECONDS);}public void update() {mViewPager.setCurrentItem(currentItem);titleText.setText(viewPagerItem[currentItem].iMageTitle);dotUpdate();} }图片轮播的原理基本都是参考http://blog.csdn.net/allen315410/article/details/39294343 该篇blog的介绍这里做的主要的事情即把相关的接口进行一个整理集中剥离出一个通用的处理组件方便开发者的集成。 目前该组件的实现还比较粗糙待后续持续的更新完善 文章写的很随意时间精力关系很多细节没有讲到最后附上github地址供参考https://github.com/imagec/ViewPager
http://www.yutouwan.com/news/260818/

相关文章:

  • 网站备案的网站名称做网站如何规避法律风险
  • 建设一个蛋糕网站的背景与目的作作网站
  • 关于建立网站的申请重庆快速网站推广
  • 学做网站看什么dw 怎么做钓鱼网站
  • 惠州建设工程交易网站手机网页版抖音入口
  • 高端响应式网站长春哪家做网站做的好
  • 太原百度网站建设一个门户网站多少钱
  • 淘宝做网站推广人电话想在百度做推广怎么做
  • 公司网站制作效果怎么样在上海找工作用哪个招聘网好
  • 陵水专业网站建设怎样查询二级建造师注册情况
  • ps做网站导航条phpcms 关闭网站
  • 中国建设网官方网站企业wordpress开发教程 pdf
  • 代码判断网站泰安网络推广公司平台
  • 湖州长兴建设局网站wordpress打赏按钮
  • 代做网站排名天元建设集团有限公司代码
  • php网站建设管理教材做婚介网站可行性报告
  • 天河营销型网站建设金乡网站建设多少钱
  • 网页制作与网站建设文档it前端是做网站的
  • 重庆网站建站系统哪家好有哪些网站是可以做免费推广的
  • 琼海做网站口碑自己做app的网站
  • 供需网站开发WordPress 4.9添加备案号
  • 做网站那个好wordpress百度经验
  • 福建有没有网站做一件代发ipv6改造 网站怎么做6
  • 企业建站系统官网网站建设使用哪种语言好
  • 自适应型网站建设哪家好wordpress rss修改
  • 六安网站建设优化公众号开发怎么做
  • 优秀的网站有哪些找网站建设公司哪家最好
  • 油画风网站简洁的企业博客html5手机网站模板源码下载
  • 建站网站盗用了别人的案例保洁公司用哪些网站做推广
  • 音乐网站是否可以做浅度链接付费推广网站