星空网 > 软件开发 > 操作系统

Android自定义控件5

本文地址:http://www.cnblogs.com/wuyudong/p/5918021.html,转载请注明源地址。

本文开始实现轮播图广告系列,这篇文章首先实现让图片滑动起来(ViewPager),效果如下:

Android自定义控件5images/loading.gif' data-original="http://images2015.cnblogs.com/blog/617081/201609/617081-20160928212039047-1886287909.gif" width="270" height="479" />

首先实现布局

<RelativeLayout ="http://schemas.android.com/apk/res/android"  ="http://schemas.android.com/tools"  android:layout_width="match_parent"  android:layout_height="match_parent"  tools:context=".MainActivity" >  <RelativeLayout    android:layout_width="match_parent"    android:layout_height="160dp" >    <android.support.v4.view.ViewPager      android:id="@+id/viewpager"      android:layout_width="match_parent"      android:layout_height="match_parent" />    <LinearLayout      android:layout_width="match_parent"      android:layout_height="40dp"      android:layout_alignParentBottom="true"      android:background="#66000000"      android:gravity="center_horizontal"      android:orientation="vertical"      android:padding="5dp" >      <TextView        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:singleLine="true"        android:text="和谐社会,和谐社会,和谐社会,和谐社会"        android:textColor="@android:color/white" />      <LinearLayout        android:id="@+id/ll_point_container"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_marginTop="5dp"        android:orientation="horizontal" >      </LinearLayout>    </LinearLayout>  </RelativeLayout></RelativeLayout>

运行项目,出现下面错误:

09-28 09:08:44.032: E/AndroidRuntime(5794): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.wuyudong.viewpager/com.wuyudong.viewpager.MainActivity}: android.view.InflateException: Binary

ViewPager是个很好很强大的控件,很多应用用它来实现很酷的效果,但是很多情况下在运行时会遇到Error inflating class android.support.v4.view.ViewPager这个问题,

这个问题的解决方法很简单:右键项目选择Build Path ->Configure Build Path,然后选择Order and export 选项.置顶android-support-v4.jar并且将该选项勾上,然后Clean下项目,重新编译问题就解决了~

接着编写逻辑代码:

package com.wuyudong.viewpager;import java.util.ArrayList;import android.os.Bundle;import android.app.Activity;import android.support.v4.view.PagerAdapter;import android.support.v4.view.ViewPager;import android.view.Menu;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.ImageView;public class MainActivity extends Activity {  private ViewPager viewPager;  private int[] imageResIds;  private ArrayList<ImageView> imageViewList;  @Override  protected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.activity_main);    // 初始化布局 View 视图    initViews();    // Model 数据    initData();    // Controller 控制器    initAdapter();  }  private void initViews() {    viewPager = (ViewPager) findViewById(R.id.viewpager);    imageResIds = new int[] { R.drawable.a, R.drawable.b, R.drawable.c,        R.drawable.d, R.drawable.e };    imageViewList = new ArrayList<ImageView>();    ImageView imageView;    for (int i = 0; i < imageResIds.length; i++) {      imageView = new ImageView(this);      imageView.setBackgroundResource(imageResIds[i]);      imageViewList.add(imageView);    }  }  private void initAdapter() {    //  }  private void initData() {    // 初始化要显示的数据    viewPager.setAdapter(new MyAdapter());  }  class MyAdapter extends PagerAdapter {    @Override    public int getCount() {      return imageViewList.size();    }    // 3、指定复用的判断逻辑    @Override    public boolean isViewFromObject(View view, Object object) {      // 当滑到新的条目,又返回来,view是否可以被复用      return view == object;    }    // 1、返回要显示的条目内容,创建条目    @Override    public Object instantiateItem(ViewGroup container, int position) {      // container:容器:ViewPager      // position:当前要显示的条目的位置      ImageView imageView = imageViewList.get(position);      // a、把view对象添加到container中      container.addView(imageView);      // b、把view对象返回给框架,适配器      return imageView; // 必须要重写,否则抛异常    }    // 2、销毁条目    @Override    public void destroyItem(ViewGroup container, int position, Object object) {      // object 要销毁的对象      container.removeView((View) object);    }  }}

运行项目后效果如下:

Android自定义控件5




原标题:Android自定义控件5

关键词:Android

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

亚马逊prime day收官,黑五网一还有哪些品类能爆?:https://www.ikjzd.com/articles/132180
为什么0.02美金你上不了首页?:https://www.ikjzd.com/articles/132183
海外仓重要吗?如何合理使用海外仓?:https://www.ikjzd.com/articles/13219
亚马逊Feedback全面解析:https://www.ikjzd.com/articles/132190
亚马逊测评:日常解密和各个系统环境的优缺点:https://www.ikjzd.com/articles/132192
亚马逊与Facebook广告正式打通,全新Attribution站外统计功能详解:https://www.ikjzd.com/articles/132196
武陵山大裂谷周围景点 武陵山大裂谷周围景点图片:https://www.vstour.cn/a/411233.html
南美旅游报价(探索南美洲的旅行费用):https://www.vstour.cn/a/411234.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流