脸萌5

上次课 实现了 page1 page2 page3 page4  四个界面来回滑动 。


整体

123
1 3结合
1 2结合

gridview-》fragment-》viewpage-》horizontalscrolview

gridview放在fragment上,fragment放在viewpage上,与horizontalscrolview






这次实现了滑动过程, 上面的滑动条跟上面的选项移动


gridview


package com.example.android160620.backup;


import java.util.ArrayList;
import java.util.List;


import android.app.Activity;
import android.os.Bundle;
import android.view.Window;
import android.widget.GridView;


import com.example.android160620.R;
import com.example.android160620.R.drawable;
import com.example.android160620.R.id;
import com.example.android160620.R.layout;
import com.example.android160620.adapter.MyAdapter;


public class GridViewActivity extends Activity {


private GridView gridView;
//数据源
private List<Integer> dataList = new ArrayList<Integer>();

private MyAdapter adapter;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 去掉title栏
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.backup_gridview);

initGridView();
}




private void initGridView() {

//1、获取控件
gridView = (GridView) findViewById(R.id.gridview);

//2、获取数据源
getData();

//3、创建适配器:将数据源和视图(控件)绑定到一起
adapter = new MyAdapter(dataList, this);

//4、将适配器绑定到gridview中
gridView.setAdapter(adapter);

}




private void getData() {

dataList.add(R.drawable.pic_rs1_1);
dataList.add(R.drawable.pic_rs1_2);
dataList.add(R.drawable.pic_rs1_3);
dataList.add(R.drawable.pic_rs1_4);
dataList.add(R.drawable.pic_rs1_5);
dataList.add(R.drawable.pic_rs1_6);
dataList.add(R.drawable.pic_rs1_7);
dataList.add(R.drawable.pic_rs1_8);
dataList.add(R.drawable.pic_rs1_9);
dataList.add(R.drawable.pic_rs1_10);
dataList.add(R.drawable.pic_rs1_11);
dataList.add(R.drawable.pic_rs1_12);
dataList.add(R.drawable.pic_rs1_13);
dataList.add(R.drawable.pic_rs1_14);
dataList.add(R.drawable.pic_rs1_15);
dataList.add(R.drawable.pic_rs1_16);
dataList.add(R.drawable.pic_rs1_17);
dataList.add(R.drawable.pic_rs1_18);
dataList.add(R.drawable.pic_rs1_19);
dataList.add(R.drawable.pic_rs1_20);
dataList.add(R.drawable.pic_rs1_21);
dataList.add(R.drawable.pic_rs1_22);
dataList.add(R.drawable.pic_rs1_23);
dataList.add(R.drawable.pic_rs1_24);
dataList.add(R.drawable.pic_rs1_25);
dataList.add(R.drawable.pic_rs1_26);
dataList.add(R.drawable.pic_rs1_27);
dataList.add(R.drawable.pic_rs1_28);
dataList.add(R.drawable.pic_rs1_29);
dataList.add(R.drawable.pic_rs1_30);
dataList.add(R.drawable.pic_rs1_31);
dataList.add(R.drawable.pic_rs1_32);
dataList.add(R.drawable.pic_rs1_33);
dataList.add(R.drawable.pic_rs1_34);
dataList.add(R.drawable.pic_rs1_35);
dataList.add(R.drawable.pic_rs1_36);
dataList.add(R.drawable.pic_rs1_37);
dataList.add(R.drawable.pic_rs1_38);
dataList.add(R.drawable.pic_rs1_39);
dataList.add(R.drawable.pic_rs1_40);

}


}


fragment


package com.example.android160620.fragment;


import java.util.ArrayList;
import java.util.List;


import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.webkit.WebView.FindListener;
import android.widget.GridView;
import android.widget.TextView;


import com.example.android160620.R;
import com.example.android160620.adapter.MyAdapter;




public class MyFragment extends Fragment{


private View view;

private int index;
private boolean sex;


//===================gridview 初始化======================
private GridView gridView;
//数据源
private List<Integer> dataList = new ArrayList<Integer>();

private MyAdapter adapter;
//===================gridview 初始化======================

/**
* 创建fragment布局
*/
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {

view = inflater.inflate(R.layout.layout_fragment, container, false);

return view;
}


/**
* 和当前fragment关联的activity的oncreate方法调用完成以后,执行的方法
*/
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);

Bundle bundle = this.getArguments();
index = bundle.getInt("index");
sex = bundle.getBoolean("sex");

initGridView();
}


private void initGridView() {
//1、获取控件
gridView = (GridView) view.findViewById(R.id.gridview);

//2、获取数据源
getData();

//3、创建适配器:将数据源和视图(控件)绑定到一起
adapter = new MyAdapter(dataList, getActivity());

//4、将适配器绑定到gridview中
gridView.setAdapter(adapter);
}




private void getData() {

switch(index) {
case 0:
break;
}

dataList.add(R.drawable.pic_rs1_1);
dataList.add(R.drawable.pic_rs1_2);
dataList.add(R.drawable.pic_rs1_3);
dataList.add(R.drawable.pic_rs1_4);
dataList.add(R.drawable.pic_rs1_5);
dataList.add(R.drawable.pic_rs1_6);
dataList.add(R.drawable.pic_rs1_7);
dataList.add(R.drawable.pic_rs1_8);
dataList.add(R.drawable.pic_rs1_9);
dataList.add(R.drawable.pic_rs1_10);
dataList.add(R.drawable.pic_rs1_11);
dataList.add(R.drawable.pic_rs1_12);
dataList.add(R.drawable.pic_rs1_13);
dataList.add(R.drawable.pic_rs1_14);
dataList.add(R.drawable.pic_rs1_15);
dataList.add(R.drawable.pic_rs1_16);
dataList.add(R.drawable.pic_rs1_17);
dataList.add(R.drawable.pic_rs1_18);
dataList.add(R.drawable.pic_rs1_19);
dataList.add(R.drawable.pic_rs1_20);
dataList.add(R.drawable.pic_rs1_21);
dataList.add(R.drawable.pic_rs1_22);
dataList.add(R.drawable.pic_rs1_23);
dataList.add(R.drawable.pic_rs1_24);
dataList.add(R.drawable.pic_rs1_25);
dataList.add(R.drawable.pic_rs1_26);
dataList.add(R.drawable.pic_rs1_27);
dataList.add(R.drawable.pic_rs1_28);
dataList.add(R.drawable.pic_rs1_29);
dataList.add(R.drawable.pic_rs1_30);
dataList.add(R.drawable.pic_rs1_31);
dataList.add(R.drawable.pic_rs1_32);
dataList.add(R.drawable.pic_rs1_33);
dataList.add(R.drawable.pic_rs1_34);
dataList.add(R.drawable.pic_rs1_35);
dataList.add(R.drawable.pic_rs1_36);
dataList.add(R.drawable.pic_rs1_37);
dataList.add(R.drawable.pic_rs1_38);
dataList.add(R.drawable.pic_rs1_39);
dataList.add(R.drawable.pic_rs1_40);

}

}


viewpage

package com.example.android160620.backup;


import java.util.ArrayList;
import java.util.List;


import com.example.android160620.R;
import com.example.android160620.R.id;
import com.example.android160620.R.layout;


import android.app.Activity;
import android.os.Bundle;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;


public class BackupViewpagerActivity extends Activity {


private ViewPager viewPager;

private List<View> dataList = new ArrayList<View>();
//布局加载器
private LayoutInflater layoutInflater;

private MyPagerAdapter adapter;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 去掉title栏
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.backup_viewpager);

initViewPager();
}


private void initViewPager() {
//1、获取控件
viewPager = (ViewPager) findViewById(R.id.viewpager);
//2、获取数据源
getData();

//3、创建适配器
adapter = new MyPagerAdapter();

//4、设置适配器
viewPager.setAdapter(adapter);

}


private void getData() {
//初始化布局加载器
layoutInflater = LayoutInflater.from(this);

//加载page1页面
View page1 = layoutInflater.inflate(R.layout.page1, null);
View page2 = layoutInflater.inflate(R.layout.page2, null);
View page3 = layoutInflater.inflate(R.layout.page3, null);
View page4 = layoutInflater.inflate(R.layout.page4, null);

//添加数据源
dataList.add(page1);
dataList.add(page2);
dataList.add(page3);
dataList.add(page4);
}

private class MyPagerAdapter extends PagerAdapter {



@Override
public int getCount() {
return dataList.size();
}


@Override
public boolean isViewFromObject(View arg0, Object arg1) {
return arg0 == arg1;
}


/**
* 删除
*/
@Override
public void destroyItem(ViewGroup container, int position, Object object) {

container.removeView((View)object);
Log.v("", "pagerAdapter destroyItem position = " + position);
}

/**
* 初始化 
*/
@Override
public Object instantiateItem(ViewGroup container, int position) {
Log.v("", "pagerAdapter instantiateItem position = " + position);
//获取视图
View view = dataList.get(position);
//添加视图
container.addView(view);

return view;
}

}






}

horizontalscollview

<LinearLayout 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"
    android:orientation="vertical"
    tools:context=".LogInActivity" >
    <HorizontalScrollView
        android:id="@+id/hsv"
        android:layout_width="match_parent"
        android:layout_height="50dip"
        android:scrollbars="none" >
        <RadioGroup
            android:id="@+id/radiogroup"
            android:layout_width="match_parent"
            android:layout_height="50dip"
            android:orientation="horizontal" >
            <RadioButton
                android:id="@+id/rb1"
                style="@style/radio_button"
                android:text="发型" />


            <RadioButton
                android:id="@+id/rb2"
                style="@style/radio_button"
                android:text="脸型" />


            <RadioButton
                android:id="@+id/rb3"
                style="@style/radio_button"
                android:text="眉毛" />


            <RadioButton
                android:id="@+id/rb4"
                style="@style/radio_button"
                android:text="眼睛" />


            <RadioButton
                android:id="@+id/rb5"
                style="@style/radio_button"
                android:text="嘴巴" />


            <RadioButton
                android:id="@+id/rb6"
                style="@style/radio_button"
                android:text="特征" />


            <RadioButton
                android:id="@+id/rb7"
                style="@style/radio_button"
                android:text="眼镜" />


            <RadioButton
                android:id="@+id/rb8"
                style="@style/radio_button"
                android:text="衣服" />


            <RadioButton
                android:id="@+id/rb9"
                style="@style/radio_button"
                android:text="帽子" />


            <RadioButton
                android:id="@+id/rb10"
                style="@style/radio_button"
                android:text="爱好" />


            <RadioButton
                android:id="@+id/rb11"
                style="@style/radio_button"
                android:text="背景" />


            <RadioButton
                android:id="@+id/rb12"
                style="@style/radio_button"
                android:text="气泡" />
        </RadioGroup>
    </HorizontalScrollView>


    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="2dip"
        android:background="#00ff00" >


        <TextView
            android:id="@+id/cursor_tv"
            android:layout_width="100dip"
            android:layout_height="2dip"
            android:background="#0000ff" />
    </LinearLayout>


    <android.support.v4.view.ViewPager
        android:id="@+id/viewpager"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" >
    </android.support.v4.view.ViewPager>


</LinearLayout>


主界面

package com.example.android160620;


import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.view.Window;
import android.view.animation.TranslateAnimation;
import android.widget.HorizontalScrollView;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.RadioGroup.OnCheckedChangeListener;
import android.widget.TextView;


import com.example.android160620.fragment.MyFragment;


public class MainActivity extends FragmentActivity {


private RadioGroup group; 

private ViewPager viewPager;

private MyAdapter adapter;

private TextView cursorView;

private HorizontalScrollView hsv;

private RadioButton radioButton;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 去掉title栏
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_main);

//初始化顶部tab
initTab();

//初始化viewpager
initViewPager();

initCursor();
initHsv();
}


private void initHsv() {


hsv = (HorizontalScrollView) findViewById(R.id.hsv);

// hsv.scrollTo(x, 0)
}


private void initCursor() {


cursorView = (TextView) findViewById(R.id.cursor_tv);
}




private void initViewPager() {

//1、获取控件
viewPager = (ViewPager) findViewById(R.id.viewpager);
//创建数据源
//2、获取数据源

//3、创建适配器
//获取fragment的管理类
FragmentManager manager = getSupportFragmentManager();
adapter = new MyAdapter(manager);
//4、设置配齐
viewPager.setAdapter(adapter);

viewPager.setOnPageChangeListener(new OnPageChangeListener() {

/**
* 选中某个page
*/
@Override
public void onPageSelected(int position) {
// TODO Auto-generated method stub

}

/**
* 当viewpager华东过程中触发的事件
* position 当前的位置
* positionOffset 当前滑动的比例
* positionOffsetPixels 当前滑动的像素
*/
@Override
public void onPageScrolled(int position, float positionOffset,
int positionOffsetPixels) {
//获取一个tab的宽度
int width = radioButton.getWidth();
//计算新的scrollview华东的位置
int newPos = (int) (position * width + positionOffset * width);

int center = (viewPager.getWidth() - width) / 2; 

//控制水平滑动条的移动
hsv.scrollTo(newPos - center, 0);

//控制游标移动
startMoveCursor(position, positionOffset);


}

/**
* 当viewpager状态改变的时候触发事件
*/
@Override
public void onPageScrollStateChanged(int state) {
// TODO Auto-generated method stub

}
});

}


private int from = 0;
/**
* 控制游标移动
* @param position       当前移动的位置
* @param positionOffset 当前移动的百分比
*/
protected void startMoveCursor(int position, float positionOffset) {
//获取当前被选中的radiobutton
RadioButton rb = (RadioButton) group.getChildAt(position);
//定义两个长度的数组 0下标 代表x坐标  1下标y坐标
int[] location = new int[2];
//获取当前radiobutton的坐标
rb.getLocationInWindow(location);

//计算移动后的坐标
int to = (int) (location[0] + positionOffset * rb.getWidth());

//创建动画
TranslateAnimation ta = new TranslateAnimation(
from, 
to, 
0, 
0);
ta.setDuration(100);
//动画完成以后停留在当前结束的位置
ta.setFillAfter(true);

cursorView.startAnimation(ta);
from = to;

}





private void initTab() {
radioButton = (RadioButton) findViewById(R.id.rb1);
group = (RadioGroup) findViewById(R.id.radiogroup);
group.setOnCheckedChangeListener(new OnCheckedChangeListener() {

@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {

switch(checkedId) {
case R.id.rb1:
viewPager.setCurrentItem(0);
break;
case R.id.rb2:
viewPager.setCurrentItem(1);
break;
case R.id.rb3:
viewPager.setCurrentItem(2);
break;
case R.id.rb4:
viewPager.setCurrentItem(3);
break;
case R.id.rb5:
viewPager.setCurrentItem(4);
break;
case R.id.rb6:
viewPager.setCurrentItem(5);
break;
case R.id.rb7:
viewPager.setCurrentItem(6);
break;
case R.id.rb8:
viewPager.setCurrentItem(7);
break;
case R.id.rb9:
viewPager.setCurrentItem(8);
break;
case R.id.rb10:
viewPager.setCurrentItem(9);
break;
case R.id.rb11:
viewPager.setCurrentItem(10);
break;
case R.id.rb12:
viewPager.setCurrentItem(11);
break;
}

}
});
}





private class MyAdapter extends FragmentPagerAdapter {
/**

* @param fm fragment的管理类
*/
public MyAdapter(FragmentManager fm) {
super(fm);
}


@Override
public Fragment getItem(int position) {

MyFragment fragment = new MyFragment();
//创建一个bundle对象,用于传递数据
Bundle bundle = new Bundle();
bundle.putInt("index", position);
bundle.putBoolean("sex", true);
//设置参数
fragment.setArguments(bundle);

return fragment;
}


@Override
public int getCount() {
return 12;
}

}






}





 笔记

gridview(九宫格)以及horizontalScrollview(左右滑动)(滑动 只能有一个子类

horizontalscrolview   radiogroup  与 radiobutton(样式)  

加在样式里面
<style name=""
<item name="属性名">名称<item>
</style>
<HotizontalScorollView>
    <radiogroup>
         <radioButton>
              id
              syle
              text


         </radioButton>
        </radiogroup>
</HorizontalScorollView>
viewpage 加载 fragment

)和fament 

viewpage 也可以实现了无线左右滑动。

可以把Fragment想成Activity中的模块,这个模块有自己的布局,有自己的生命周期,单独处理自己的输入,在Activity运行的时候可以加载或者移除Fragment模块。

gridview-》fragment-》viewpage-》horizontalscrolview




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值