RecyclerView+CardView 가로 카드 식 미끄럼 효과 구현

이제 두 가지 컨트롤 러 RecyclerView 와 CardView 를 소개 하고 인 스 턴 스 를 통 해 이 를 결합 시 켜 가로 카드 식 미끄럼 효 과 를 실현 합 니 다.
1.RecyclerView
RecyvlerView 는 안 드 로 이 드 SDK 에 새로 추 가 된 컨트롤 로 ListView 대신 공식 적 으로 추천 되 었 습 니 다.더 좋 은 유연성 과 대체 성 을 가지 기 때 문 입 니 다.
2.CardView
CardView 는 안 드 로 이 드 5.0 이 내 놓 은 카드 식 컨트롤 로 내부 에 많은 유용 한 방법 을 밀봉 하여 미관 효 과 를 실현 했다.
3.안 드 로 이 드 스튜디오 에서 RecylerView 와 CardView 를 어떻게 사용 합 니까?
build.gradle 에 의존 재 편집 을 추가 하면 됩 니 다.

compile 'com.android.support:recyclerview-v7:25.+'
compile 'com.android.support:cardview-v7:25
4.인 스 턴 스 를 통 해 두 가지 컨트롤 을 사용 하여 가로 카드 식 미끄럼 효 과 를 실현 합 니 다.
main.xml 레이아웃 파일 을 만 듭 니 다.코드 는 다음 과 같 습 니 다.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    xmlns:app="http://schemas.android.com/apk/res-auto">

 <android.support.v7.widget.RecyclerView
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:id="@+id/recycler_View"
  >

 </android.support.v7.widget.RecyclerView>

</LinearLayout>
ListView 를 사용 해 보신 분 들 은 RecyclerView 를 채 울 키 레이아웃 이 필요 하 다 는 걸 아 실 거 예요.
다음은 recyclerViewitem.xml 코드:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
         xmlns:app="http://schemas.android.com/apk/res-auto"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/recyclerview_item"
    android:padding="30dp"

 >

 <android.support.v7.widget.CardView
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:orientation="vertical"
  app:contentPadding="50dp"
  app:cardCornerRadius="20dp"
  android:clickable="true"

  android:foreground="?android:attr/selectableItemBackground"
  app:cardElevation="@dimen/cardview_compat_inset_shadow"
  app:cardBackgroundColor="@color/cardview_light_background">

  <LinearLayout
   android:layout_width="match_parent"
   android:layout_height="wrap_content">

   <TextView
    android:id="@+id/tv1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:text="  "
    android:textSize="22dp"/>
  </LinearLayout>

  <LinearLayout
   android:layout_width="match_parent"
   android:layout_height="114dp"
   >
   <TextView
    android:id="@+id/tv2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:text="
         ,     "

    android:textSize="22dp"/>
  </LinearLayout>
 </android.support.v7.widget.CardView>
</LinearLayout>
코드 에서 CardView 컨트롤 을 사용 하고 컨트롤 에 간단 한 두 개의 TextView 를 추가 한 것 을 발견 할 수 있 습 니 다.
카드 뷰 의 상용 속성 을 소개 하 는 것 도 현재 카드 효과 의 관건 이다.
card_view:contentPadding 이것 은 당신 의 내용 에 padding 속성 을 추가 할 수 있 습 니 다.
card_view:cardbacgroundColor 이것 은 cardview 의 배경 을 바 꿀 수 있 습 니 다.
card_view:cardCornerRadius 이것 은 cardview 원 각 의 크기 를 바 꿀 수 있 습 니 다.
card_view:cardElevation 은 설명 하기 어렵 습 니 다.CardView 의 Z 축 음영 은 음영 의 크기 와 부 드 러 움 을 결정 하 는 데 사용 되 기 때문에 깊이 효과 에 대한 설명 을 실 감 나 게 모 의 할 수 있 습 니 다.하 얀 점 을 말 하면 음영 의 크기 로 이해 할 수 있어 요.
andorid:foreground=”?android:attr/selectable ItemBackground
상기 상용 속성 을 통 해 CardView 에 다양한 효 과 를 낼 수 있 습 니 다.
이제 활동 으로 돌아 가서 RecyclerView 를 하 겠 습 니 다.
ListView 와 마찬가지 로 어댑터 를 써 야 합 니 다.코드 는 다음 과 같 습 니 다.

public class recyclerViewadapter extends RecyclerView.Adapter {
 private List<DataBean> lists;
 private Context context;

 public recyclerViewadapter(List<DataBean> lists, Context context) {
  this.lists = lists;
  this.context = context;
 }

 class myholder extends RecyclerView.ViewHolder{

  private TextView tv1,tv2;
  public myholder(View itemView) {
   super(itemView);
   tv1= (TextView) itemView.findViewById(R.id.tv1);
   tv2= (TextView) itemView.findViewById(R.id.tv2);


  }
 }

 @Override
 public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
  myholder holder =new myholder(LayoutInflater.from(parent.getContext()).inflate(R.layout.recyclerview_item,parent,false));
  return holder;
 }

 @Override
 public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
  Log.d("TAG", "onBindViewHolder: "+lists.get(position).getAutor());
  ((myholder)holder).tv1.setText(lists.get(position).getAutor());
  ((myholder)holder).tv2.setText(lists.get(position).getContent());

 }

 @Override
 public int getItemCount() {
  return lists.size();
 }
}
RecyclerView 계승 클래스 를 작성 합 니 다.Adapter,RecyclerView 재 작성 합 니 다.Adapter 의 세 가지 중요 한 방법 은 onBindViewHolder()getItemCount()와 OncreateViewHolder()입 니 다.

OncreateViewHolder():     View, LayoutManager   
OnBindViewHolder():          
getItemCount() :       
Activity 에서 코드 는 다음 과 같 습 니 다.

public class Frament1 extends android.support.v4.app.Fragment{

 private Toolbar toolbar1;
 private RecyclerView recycler_view;
 private TextView tv1,tv2;
 private View view;
 private List<DataBean> lists;


 @Override
 public void onAttach(Context context) {

  super.onAttach(context);
 }

 @Nullable
 @Override
 public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
  setHasOptionsMenu(true);
   view = inflater.inflate(R.layout.fragment1, container, false);

  initView();
  initData();
  LinearLayoutManager m=new LinearLayoutManager(getContext());
  m.setOrientation(LinearLayoutManager.HORIZONTAL);
  recycler_view.setLayoutManager(m);
  recyclerViewadapter adapter=new recyclerViewadapter(lists,getContext());
  recycler_view.setAdapter(adapter);


  return view;
 }

 @Override
 public void onResume() {
  super.onResume();

 }

 private void initData() {
  lists=new ArrayList<>();
  lists.add(new DataBean("Smart","     ,     "));
  lists.add(new DataBean("Smart","     ,     "));
  lists.add(new DataBean("Smart","     ,     "));
  lists.add(new DataBean("Smart","     ,     "));
  lists.add(new DataBean("Smart","     ,     "));
  lists.add(new DataBean("Smart","     ,     "));

 }

 private void initView() {
  recycler_view= (RecyclerView) view.findViewById(R.id.recycler_View);
  tv1= (TextView) view.findViewById(R.id.tv1);
  tv2= (TextView) view.findViewById(R.id.tv2);


 }
}
코드 에서 저 희 는 LayoutManager 대상 을 가 져 와 수평 방향 으로 설정 하고 RecyclerView 의 LayoutManager 를 설정 합 니 다.
그리고 adapter 대상 을 실례 화하 여 상하 문과 가짜 데이터 lists 를 전송 하고 RecyclerView 를 설정 합 니 다.adapater

 LinearLayoutManager m=new LinearLayoutManager(getContext());
  m.setOrientation(LinearLayoutManager.HORIZONTAL);
  recycler_view.setLayoutManager(m);
  recyclerViewadapter adapter=new recyclerViewadapter(lists,getContext());
  recycler_view.setAdapter(adapter);
이 기본 절 차 는 이미 완성 되 었 습 니 다.프로그램 을 실행 합 니 다.
다음은 캡 처 실행 입 니 다.


미끄럼 기능 에 관 한 글 은 주 제 를 클릭 하 십시오《안 드 로 이 드 슬라이딩 기능》
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기