Android 개발 은 ViewPager+GridView 를 바탕 으로 대중 평가 가로 미끄럼 기능 을 실현 합 니 다.

먼저 효과 도 를 보 여 드 리 겠 습 니 다.여러분 이 괜 찮 으 시다 면 실현 사고 와 코드 를 참고 하 세 요.

1 ViewPager 클래스 는 다 중 인터페이스 전환 의 새로운 효 과 를 제공 합 니 다.
새로운 효 과 는 다음 과 같은 특징 이 있 습 니 다.
[1]현재 화면 중 하 나 를 표시 합 니 다.
[2]사용자 가 좌우 슬라이딩 인 터 페 이 스 를 통과 할 때 현재 화면 은 현재 인터페이스 와 다음 인터페이스의 일부분 을 표시 합 니 다.
[3]슬라이딩 종료 후,화면 이 자동 으로 현재 선택 한 화면 으로 이동
2 안에 비교적 중요 한 방법 과 인 터 페 이 스 를 소개 한다.
1.OnPageChangeListener ViewPager 페이지 에서 감청 인 터 페 이 스 를 전환 합 니 다.그 중에서 저 희 는 Public void onPageSelected(int arg 0),Public void onPageScrolled(int arg 0,float arg 1,int arg 를 자주 실현 해 야 합 니 다.
2)Public void onPageScroll State Changed(int arg 0)는 세 가지 측면 이 있 는데 그 중에서 첫 번 째 방법 은 더 많이 사용 된다.
2.setCurrent Item(int item)은 현재 페이지 로 이동 하 는 것 을 설정 합 니 다.
3.ViewPager 를 표시 하려 면 PagerAdapter 류 가 없어 서 는 안 되 고 적당 한 조합 을 할 수 있 습 니 다.그 중에서 도 우 리 는 다음 과 같은 방법 을 자주 실현 해 야 한다.Public void destroy Item(View arg 0,int arg 1,Object arg 2),Public int getCount(),Public Object instantiate Item(View arg 0,int arg 1),Public boolean isView FromObject(View arg 0,Object arg 1),구체 적 인 사용 방법 등 은 예 를 보면 OK 이다.
3 예 코드
자바 코드

package mm.shandong.com.testviewpagergrid;
import android.content.res.TypedArray;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.GridView;
import android.widget.ImageView;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.TextView;
import android.widget.Toast;
import java.util.ArrayList;
import java.util.List;
import mm.shandong.com.testviewpagergrid.entity.Catogray;
public class TestViewpagerGridActivity extends AppCompatActivity {
ViewPager viewPagerHomeFragment;
List<Catogray> catogarys;
String[] catogary_names;
int[] catogary_resourceIds;
LayoutInflater layoutInflater;
List<View> gridViews;
RadioGroup radioGroup_index_fragment;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_test_viewpager_grid);
catogary_names = getResources().getStringArray(R.array.catogary_names);
TypedArray typedArray = getResources().obtainTypedArray(R.array.catogary_resourceIds);
catogary_resourceIds = new int[typedArray.length()];
for (int i = 0; i < typedArray.length(); i++) {
catogary_resourceIds[i] = typedArray.getResourceId(i, 0);
}
catogarys = new ArrayList<Catogray>();
viewPagerHomeFragment = (ViewPager) findViewById(R.id.viewPagerHomeFragment);
layoutInflater = getLayoutInflater();
radioGroup_index_fragment =
(RadioGroup) findViewById(R.id.radioGroup_index_fragment);
for (int i = 0; i < catogary_names.length; i++) {
Catogray catogary = new Catogray();
catogary.setName(catogary_names[i]);
catogary.setImage_source(catogary_resourceIds[i]);
catogarys.add(catogary);
}
initViewPager();
}
public void initViewPager() {
gridViews = new ArrayList<View>();
///     GridView
GridView gridView1 =
(GridView) layoutInflater.inflate(R.layout.grid_fragment_home, null);
MyGridViewAdapter myGridViewAdapter1 = new MyGridViewAdapter(0, 8);
gridView1.setAdapter(myGridViewAdapter1);
///     GridView
GridView gridView2 = (GridView)
layoutInflater.inflate(R.layout.grid_fragment_home, null);
MyGridViewAdapter myGridViewAdapter2 = new MyGridViewAdapter(1, 8);
gridView2.setAdapter(myGridViewAdapter2);
///     GridView
GridView gridView3 = (GridView)
layoutInflater.inflate(R.layout.grid_fragment_home, null);
MyGridViewAdapter myGridViewAdapter3 = new MyGridViewAdapter(2, 8);
gridView3.setAdapter(myGridViewAdapter3);
gridViews.add(gridView1);
gridViews.add(gridView2);
gridViews.add(gridView3);
///  viewpager PagerAdapter
viewPagerHomeFragment.setAdapter(new PagerAdapter() {
@Override
public boolean isViewFromObject(View arg0, Object arg1) {
// TODO Auto-generated method stub
return arg0 == arg1;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return gridViews.size();
}
@Override
public void destroyItem(ViewGroup container, int position,
Object object) {
// TODO Auto-generated method stub
container.removeView(gridViews.get(position));
//super.destroyItem(container, position, object);
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
// TODO Auto-generated method stub
container.addView(gridViews.get(position));
return gridViews.get(position);
}
});
///  viewPager           
viewPagerHomeFragment.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrollStateChanged(int position) {
// TODO Auto-generated method stub
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
// TODO Auto-generated method stub
}
@Override
public void onPageSelected(int position) {
// TODO Auto-generated method stub
RadioButton radioButton = (RadioButton)
radioGroup_index_fragment.getChildAt(position);
radioButton.setChecked(true);
}
});
}
///  GridView Adapter
public class MyGridViewAdapter extends BaseAdapter {
private int page;
private int count;
public MyGridViewAdapter(int page, int count) {
this.page = page;
this.count = count;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return 8;
}
@Override
public Catogray getItem(int position) {
// TODO Auto-generated method stub
return catogarys.get(page * count + position);
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
ViewHolder viewHolder = null;
final Catogray catogary = catogarys.get(page * count + position);
if (convertView == null) {
viewHolder = new ViewHolder();
convertView = layoutInflater.inflate(R.layout.grid_fragment_home_item, null);
viewHolder.grid_fragment_home_item_img =
(ImageView) convertView.findViewById(R.id.grid_fragment_home_item_img);
viewHolder.grid_fragment_home_item_txt =
(TextView) convertView.findViewById(R.id.grid_fragment_home_item_txt);
convertView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) convertView.getTag();
}
viewHolder.grid_fragment_home_item_img.setImageResource(catogary.getImage_source());
viewHolder.grid_fragment_home_item_txt.setText(catogary.getName());
viewHolder.grid_fragment_home_item_img.
setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// TODO Auto-generated method stub
Toast.makeText(TestViewpagerGridActivity.this,
catogary.getName(), Toast.LENGTH_SHORT).show();
}
});
return convertView;
}
}
public class ViewHolder {
public ImageView grid_fragment_home_item_img;
public TextView grid_fragment_home_item_txt;
}
}
위 에서 말 한 것 은 소 편 이 소개 한 안 드 로 이 드 개발 모방 대중 평 가 는 ViewPager+GridView 를 바탕 으로 가로 미끄럼 기능 을 실현 하 는 것 입 니 다.여러분 에 게 도움 이 되 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 메 시 지 를 남 겨 주세요.소 편 은 신속하게 답 해 드 리 겠 습 니 다.여기 서도 저희 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!

좋은 웹페이지 즐겨찾기