五月17

activity:package com.example.test13_tabhost;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.TabHost;
import android.widget.TabHost.TabSpec;
import android.widget.TextView;

public class MainActivity extends Activity {
 private TabHost tabhost;
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
  
  tabhost = (TabHost) findViewById(R.id.tabhost);
  tabhost.setup();//找到TabWidget和FrameLayout
  //添加标签页
  TabSpec tab1 = tabhost.newTabSpec("tag1");
//  tab1.setIndicator("首页",getResources().getDrawable(R.drawable.i1));
  tab1.setIndicator(createView("首页"));
  //指定标签的内容
  tab1.setContent(R.id.line1);
  tabhost.addTab(tab1);
  TabSpec tab2 = tabhost.newTabSpec("tag2");
//  tab2.setIndicator("第二页",getResources().getDrawable(R.drawable.i2));
  tab2.setIndicator(createView("第二页"));
  //指定标签的内容
  tab2.setContent(R.id.line2);
  tabhost.addTab(tab2);
  TabSpec tab3 = tabhost.newTabSpec("tag3");
//  tab3.setIndicator("第三页",getResources().getDrawable(R.drawable.i7));
  tab3.setIndicator(createView("第三页"));
  //指定标签的内容
  tab3.setContent(R.id.line3);
  tabhost.addTab(tab3);
 }
 
 private View createView(String text){
  View view = View.inflate(this, R.layout.tab, null);
  TextView tv_title = (TextView) view.findViewById(R.id.tv_title);
  tv_title.setText(text);
  return view;
 }

第一个布局:<TabHost xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:id="@+id/tabhost">
 <LinearLayout
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:orientation="vertical"
     >
     <TabWidget
         android:id="@android:id/tabs"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         >
        
     </TabWidget>
     <FrameLayout
         android:id="@android:id/tabcontent"
         android:layout_width="match_parent"
         android:layout_height="0dp"
         android:layout_weight="1"
         >
         <!-- 首页 -->
         <LinearLayout
             android:layout_width="match_parent"
             android:layout_height="match_parent"
             android:id="@+id/line1"
             >
             <TextView
                 android:layout_width="match_parent"
                 android:layout_height="match_parent"
                 android:text="首页"
                 android:textSize="30sp"
                 android:gravity="center"
                 />
    </LinearLayout>
     <!-- 第二页 -->
         <LinearLayout
             android:layout_width="match_parent"
             android:layout_height="match_parent"
             android:id="@+id/line2"
             >
             <TextView
                 android:layout_width="match_parent"
                 android:layout_height="match_parent"
                 android:text="第二页"
                 android:textSize="30sp"
                 android:gravity="center"
                 />
    </LinearLayout>
     <!-- 第三页 -->
         <LinearLayout
             android:layout_width="match_parent"
             android:layout_height="match_parent"
             android:id="@+id/line3"
             >
             <TextView
                 android:layout_width="match_parent"
                 android:layout_height="match_parent"
                 android:text="第三页"
                 android:textSize="30sp"
                 android:gravity="center"
                 />
    </LinearLayout>
    </FrameLayout>
      </LinearLayout>
</TabHost>

第二个布局:<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:background="@drawable/bg"
    >
    <TextView
        android:id="@+id/tv_title"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center"
        android:text="首页"
        android:textColor="@android:color/white"
        />

</LinearLayout>

图片:

activity:package com.example.test14_viewpager;

import java.util.ArrayList;

import android.app.Activity;
import android.net.NetworkInfo.State;
import android.os.Bundle;
import android.os.Handler;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends Activity {
private ViewPager vp_main;
private TextView tv_main_title;
private LinearLayout ll_main_point_group;
private ArrayList<ImageView> imageViews;
//图片资源ID
private int[] imageIds={R.drawable.a,R.drawable.b,R.drawable.c,R.drawable.d,R.drawable.e};
//图片标题集合
private String[] imgDescriptions={"有型有范","周末大放假","家电买一送一","预约赢新机","京东火锅节"};
//上一次高亮显示的位置
private int prePosition = 0;
private Handler handler=new Handler(){
 public void handleMessage(android.os.Message msg) {
  int item =vp_main.getCurrentItem()+1;
  vp_main.setCurrentItem(item);
  //延迟发消息
  handler.sendEmptyMessageDelayed(0, 3000);
 };
};
private boolean isDragging = false;
@Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
  //Viewpager的使用
    //1.在不仅仅文件中定义Viewpager
    //2.在代码中实例化Viewpager
  vp_main=(ViewPager) findViewById(R.id.vp_main);
  tv_main_title=(TextView) findViewById(R.id.tv_main_title);
  ll_main_point_group=(LinearLayout) findViewById(R.id.ll_main_point_group);  
  
  //3.准备数据
  imageViews=new ArrayList<ImageView>();
  for (int i = 0; i < imageIds.length; i++) {
   ImageView imageView = new ImageView(this);
   imageView.setBackgroundResource(imageIds[i]);
   //添加到集合
   imageViews.add(imageView);
   //添加小圆点
   ImageView point= new ImageView(this);
   point.setBackgroundResource(R.drawable.point_selector);
   LinearLayout.LayoutParams params =
     new LinearLayout.LayoutParams(8,8);
   if (i==0) {
    point.setEnabled(true);//红色
   }else{
    point.setEnabled(false);//黑色
    params.leftMargin=8;
   }
   point.setLayoutParams(params);
   ll_main_point_group.addView(point);
   //添加到集合中
   imageViews.add(imageView);
  }
  //4.设置适配器(PagerAdapter)-Item布局-绑定数据
  vp_main.setAdapter(new MyPagerAdapter());
  
  //设置监听ViewPager页面的改变
  vp_main.setOnPageChangeListener(new MyOnPageChangeListener());
  //设置中间位置,要保证是imageView的整数倍
  int item= Integer.MAX_VALUE/2-Integer.MAX_VALUE/2%imageViews.size();
  vp_main.setCurrentItem(item);
  
  tv_main_title.setText(imgDescriptions[prePosition]);
//  发消息
  handler.sendEmptyMessageDelayed(0, 3000);
 }

    class MyOnPageChangeListener implements OnPageChangeListener{
//静止》滑动 或  滑动》静止 或 静止》拖拽
  @Override
  public void onPageScrollStateChanged(int state) {
   if (state == ViewPager.SCROLL_STATE_DRAGGING) {
    isDragging=true;
   }else if(state == ViewPager.SCROLL_STATE_SETTLING){
    
   }else if(state == ViewPager.SCROLL_STATE_IDLE && isDragging){
    isDragging=false;
    handler.removeCallbacksAndMessages(null);
    handler.sendEmptyMessageDelayed(0, 3000);
   }
  }
//当页面滚动了的时候回调这个方法
  @Override
  public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
   
  }
//当某个页面被选中了的时候回调
  @Override
  public void onPageSelected(int position) {
   int realPosition = position % imageViews.size();
   //设置对应的页面文本信息
   tv_main_title.setText(imgDescriptions[realPosition]);
   //把上一个高亮的设置为黑色
   ll_main_point_group.getChildAt(prePosition).setEnabled(false);
   //红色
   ll_main_point_group.getChildAt(realPosition).setEnabled(true);
   prePosition=realPosition;
  }
     
    }
   
 class MyPagerAdapter extends PagerAdapter{
        //得到图片的总数
  @Override
  public int getCount() {
   return Integer.MAX_VALUE;//int类型的最大值
//   return imageViews.size();
  }
  //相当于getView的方法
  //container    ViewPager自身
  //position     当前实例化页面的位置(下标)
  @Override
  public Object instantiateItem(ViewGroup container, int position) {
   int realPosition = position % imageViews.size();
   ImageView imageView = imageViews.get(realPosition);
   container.addView(imageView);//添加到ViewPager中
   imageView.setOnTouchListener(new View.OnTouchListener() {
    
    @Override
    public boolean onTouch(View v, MotionEvent event) {
     switch (event.getAction()) {
     case MotionEvent.ACTION_DOWN:
      Log.e("TAG","手指按下");
      handler.removeCallbacksAndMessages(null);
      break;
     case MotionEvent.ACTION_MOVE:
      Log.e("TAG","手指移动");
      break;
     case MotionEvent.ACTION_CANCEL:
      Log.e("TAG","事件取消");
//      handler.removeCallbacksAndMessages(null);
//      handler.sendEmptyMessageDelayed(0, 3000);
      break;
     case MotionEvent.ACTION_UP:
      Log.e("TAG","手指抬起");
      handler.removeCallbacksAndMessages(null);
      handler.sendEmptyMessageDelayed(0, 3000);
     }
     return false;
    }
   });
   imageView.setTag(position);
   imageView.setOnClickListener(new View.OnClickListener() {
    
    @Override
    public void onClick(View v) {     
     int position=(Integer) v.getTag() % imageViews.size();
     String text=imgDescriptions[position];
     Toast.makeText(MainActivity.this, text, Toast.LENGTH_SHORT).show();
    }
   });
   return imageView;
  }
  
  
  
  //比较View和Object是否是同一个实例
    //view 页面
    //object  是instantiateItem返回的结果
  @Override
  public boolean isViewFromObject(View view, Object object) {
   
   return view==object;
  }
  //释放资源
    @Override
    public void destroyItem(ViewGroup container, int position, Object object) {
     // TODO Auto-generated method stub
      container.removeView((View) object);
    }

布局1:<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="${relativePackage}.${activityClass}" >

    <android.support.v4.view.ViewPager
        android:id="@+id/vp_main"
        android:layout_width="match_parent"
        android:layout_height="180dp"
         />
   
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:layout_alignBottom="@id/vp_main"
        android:background="#44000000"
        >
    <TextView
        android:id="@+id/tv_main_title"   
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:padding="3dp"
        android:gravity="center_horizontal"
        android:text="广告标题"
        android:textColor="#FFFFFF"   
        />
       <LinearLayout
        android:id="@+id/ll_main_point_group"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"  
        android:orientation="horizontal"  
        android:layout_gravity="center_horizontal"  
           ></LinearLayout>      
    </LinearLayout>

</RelativeLayout>
图片:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值