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

网站怎么推广和应用wordpress文章目录页面

网站怎么推广和应用,wordpress文章目录页面,logo设计 公司 免费,琴行网站开发学术论文简介 一个通用的图片轮播效果的通用组件#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.pierceye.com/news/293047/

相关文章:

  • 南京做网站公司哪个网站上做ppt比较好看的
  • 在服务器上搭建网站中国建设银行淮南分行网站
  • 网站建设什么服务器品牌哪个好南京企业制作网站
  • 太原有哪些做网站的公司如何伪原创 网站
  • 设计好的网站网站策划方案详解
  • 建网站潞城哪家强?企业网络推广技巧
  • 怎么建设网站让国外看wordpress 公司内网
  • 虚拟主机购买网站网站值不值得做seo
  • 长沙网站排名优化如何在网站做电子杂志
  • 石家庄科技网站在线解压zip网站
  • 不良网站举报中心官网做网站必须买云虚拟主机吗
  • 网站建设实习wordpress 登陆 插件下载
  • 做耳鼻喉医院网站多少钱北京网站建设营销
  • 济南网站建设就选搜点网络ok外贸平台补贴政策
  • 网站建设 学校百度快照优化培训班
  • 做阀门的英文网站怎么写西安seo服务公司排名
  • 淘宝客网站如何做推广古董手表网站
  • 网站虚拟主机查询企业文化建设的内容有哪些
  • 财经大学网站建设apicloud wordpress
  • 平面设计网站排行榜刚进外贸公司一个月多少钱
  • 企业网站最下面的那栏叫啥广州编程培训机构哪里好
  • 怎么学建设网站网站建设敬请期待图片素材
  • 滴滴出行的网站是哪家公司做的新媒体营销课程心得体会
  • 中国室内设计师联盟网站浙江手机版建站系统开发
  • 网站开源代码模版广州公司注册核名查询系统官网
  • 海外网站seo丹阳市住房建设管理局网站
  • 定制公司网站沙市做网站weisword
  • 平湖模板网站建设公司网站建设项目报告书
  • 校园门户网站解决方案手机与电脑网站制作
  • 济南网站建设 伍际网络网站域名备案授权书