自定义控件(二)--广告轮播
来源:互联网 发布:出租屋网络方案 编辑:程序博客网 时间:2024/06/03 01:41
广告轮播
接着上一次的这次演示的任然是组合已有的控件来实现新的控件
首先是效果图这是一个比较常见的效果,广告的轮播效果这里面主要的控件就是使用了Viewpage接下来看一看布局文件layout/activity_main.xml<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="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/main_ads_viewpage" android:layout_width="match_parent" android:layout_height="match_parent" /> <LinearLayout android:layout_width="match_parent" android:layout_height="40dp" android:padding="5dp" android:orientation="vertical" android:layout_alignParentBottom="true" android:gravity="center_horizontal" android:background="#66000000" > <TextView android:id="@+id/tv_desc" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textColor="@android:color/white" android:singleLine="true" /> <LinearLayout android:id="@+id/main_llpoint_ll" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="5dp" android:orientation="horizontal" ></LinearLayout> </LinearLayout> </RelativeLayout></RelativeLayout>
com.example.lql.lopp.MainActivitypackage com.example.lql.lopp;import android.os.Bundle;import android.support.v4.view.PagerAdapter;import android.support.v4.view.ViewPager;import android.support.v7.app.AppCompatActivity;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;public class MainActivity extends AppCompatActivity { private ViewPager viewPage; private int[] Color = {R.color.color1, R.color.color2,R.color.color3, R.color.color4,R.color.color5}; private List<ImageView> imageList; private LinearLayout points_ll;//points的父容器 private int PreviousPosition = 0;//记录之前的白点的位置 private boolean ISLOOPING = true; private String[] pageTitle = { "广告轮回播放页面", "广告轮回播放页面2", "广告轮回播放页面3", "广告轮回播放页面4", "广告轮回播放页面5"}; private TextView tv_pageTitle;//每一个page页的标题 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); initdata(); initEvent(); initAdapter(); new Thread(){ @Override public void run() { super.run(); while(ISLOOPING){ runOnUiThread(new Runnable() { @Override public void run() { viewPage.setCurrentItem(viewPage.getCurrentItem()+1); } }); try { sleep(2000); } catch (InterruptedException e) { e.printStackTrace(); } } } }.start(); } private void initAdapter() { myAdapter adapter = new myAdapter(); viewPage.setAdapter(adapter); } private void initEvent() { viewPage.setOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } @Override public void onPageSelected(int position) { //设置与page页相对应的点的position为白色 int NewPositon = position%imageList.size(); points_ll.getChildAt(NewPositon).setEnabled(true); //把上一个的白点变为灰点 points_ll.getChildAt(PreviousPosition).setEnabled(false); tv_pageTitle.setText(pageTitle[NewPositon]); PreviousPosition = NewPositon; } @Override public void onPageScrollStateChanged(int state) { } }); } /** * 初始化数据 */ private void initdata() { imageList = new ArrayList<>(); ImageView imageView; ImageView imagPoint; LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(15, 15);//设置宽高 for (int i = 0; i < Color.length; i++) { imageView = new ImageView(this); imagPoint = new ImageView(this); imageView.setBackgroundResource(Color[i]); imageList.add(imageView); if (i != 0) params.setMargins(15, 0, 0, 0); imagPoint.setEnabled(false);//初始化为灰点 imagPoint.setBackgroundResource(R.drawable.ablechoose); points_ll.addView(imagPoint, params); } points_ll.getChildAt(0).setEnabled(true);//初始化第一个点为白色 } private void initView() { tv_pageTitle = (TextView) findViewById(R.id.tv_desc); viewPage = (ViewPager) findViewById(R.id.main_ads_viewpage); points_ll = (LinearLayout) findViewById(R.id.main_llpoint_ll); } /** * ViewPage的数据与Listview一样来自于Adapter */ private class myAdapter extends PagerAdapter { /** * @param container * @param position * @return 返回相应的View 实例化当前的View,添加到contrainer中,然后返回生成的View或关联的Object (用于在isViewFromObject中检查) */ @Override public Object instantiateItem(ViewGroup container, int position) { int NewPosition = position%imageList.size(); ImageView imageView = imageList.get(NewPosition); container.addView(imageView); return imageView; } /** * @param container * @param position * @param object * 从container中移除指定的View (释放内存) */ @Override public void destroyItem(ViewGroup container, int position, Object object) { container.removeView((View) object); } @Override public int getCount() { return Integer.MAX_VALUE; } @Override public boolean isViewFromObject(View view, Object object) { return view == object; } } @Override protected void onDestroy() { super.onDestroy(); ISLOOPING = false; }}
0 0
- 自定义控件(二)--广告轮播
- android 自定义ViewFlipper轮播广告控件——自定义控件学习(二)
- 自定义的广告轮播---(二)(无限循环)
- android 自定义ViewAnimator文字轮播广告控件——自定义控件学习(三)
- android 自定义轮播广告控件ViewPager——自定义控件学习(四)
- 自定义广告轮播
- Android自定义控件BannerLayout,实现广告轮播
- Android学习(40) -- 自定义控件(4)广告轮播(ViewPager)
- 自定义广告轮播控件(基于ViewPager),带指示器,一键引用
- Android自定义轮播广告
- 自定义的广告轮播 --(三)(无限循环)
- 自定义ViewPage+底部指示器(广告图片轮播)
- Android--自定义控件(图片轮播)
- IOS 广告轮播控件 - BannerView
- Android广告图片轮播控件
- Android广告图片轮播控件banner
- Android-----------广告图片轮播控件
- 安卓自定义容器控件,装载TextView,实现文字竖直轮播小喇叭广告条
- Android---stateLayout在不同的界面间切换
- vertical-align垂直居中
- Windows下python获取剪切板的内容
- Spring Boot application.properties或application.yml相关配置
- Pdf File Writer 中文应用(PDF文件编写器C#类库)
- 自定义控件(二)--广告轮播
- emgucv 求n个点两两之间的距离
- oracle中调用存储过程
- Git删除远程Tag、分支
- 当外包遇上半路出家:我是非科班程序员
- 用好压批量修改文件名
- android app之布局优化
- pdf转换器如何切换语言类型
- PHP:捕获异常