tab切换,fragment中嵌套listview,listview自定义item,优化以及onclick



  1.        android:layout_weight="2"  
  2.        android:gravity="center">  
  3.        <ImageView   
  4.            android:id="@+id/img_movie"  
  5.            android:layout_width="80dp"  
  6.            android:layout_height="80dp"  
  7.            android:layout_gravity="center"/>  
  8.    </LinearLayout>  
  9.    <RelativeLayout   
  10.        android:layout_width="wrap_content"  
  11.        android:layout_height="match_parent"  
  12.        android:layout_weight="4.5"  
  13.        android:paddingTop="8dp"   
  14.        android:paddingBottom="8dp"  
  15.        >  
  16.        <TextView   
  17.            android:id="@+id/tv_title"  
  18.            android:layout_width="wrap_content"  
  19.            android:layout_height="wrap_content"  
  20.            android:text="标题"  
  21.            android:textSize="18sp"  
  22.           android:layout_alignParentTop="true"/>  
  23.         <TextView   
  24.               android:id="@+id/tv_content"  
  25.              android:layout_width="wrap_content"  
  26.              android:layout_height="wrap_content"     
  27.              android:textSize="13sp"   
  28.              android:layout_centerVertical="true"  
  29.              android:maxLines="1"  
  30.              android:text="内容"  
  31.            />  
  32.         <ImageView   
  33.            android:id="@+id/img_movie_beginStudy"  
  34.             android:layout_width="60dp"  
  35.             android:layout_height="20dp"  
  36.             android:background="@drawable/beginstudy"  
  37.             android:layout_alignParentBottom="true"/>  
  38.    </RelativeLayout>  
  39.     <LinearLayout   
  40.        android:layout_width="wrap_content"  
  41.        android:layout_height="wrap_content"  
  42.        android:layout_weight="1"  
  43.        android:paddingTop="8dp"   
  44.        android:paddingBottom="8dp"  
  45.        android:gravity="right">  
  46.        <TextView   
  47.              android:id="@+id/tv_time"  
  48.            android:layout_width="wrap_content"  
  49.             android:layout_height="wrap_content"  
  50.             android:text="TIME"  
  51.             android:textSize="13sp"  
  52.             android:paddingRight="5dp"  
  53.            />  
  54.    </LinearLayout>  
  55.   
  56. </LinearLayout>  

3.movie_list_fragment

[html]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:layout_width="match_parent"  
  4.     android:layout_height="match_parent"  
  5.     android:gravity="center"  
  6.     android:orientation="vertical" >  
  7.   
  8.     <ListView   
  9.     android:id="@+id/lv_movie"  
  10.     android:layout_width="match_parent"  
  11.     android:layout_height="match_parent"></ListView>  
  12.   
  13. </LinearLayout>  

4.MovieAdapter(Movie需要final才能被内部类使用)

[java]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. package com.movie;  
  2.   
  3. import java.util.List;  
  4.   
  5. import android.content.Context;  
  6. import android.view.LayoutInflater;  
  7. import android.view.View;  
  8. import android.view.ViewGroup;  
  9. import android.widget.ArrayAdapter;  
  10. import android.widget.ImageView;  
  11. import android.widget.TextView;  
  12. import android.widget.Toast;  
  13.   
  14. import com.example.itingshuo.R;  
  15.   
  16. public class MovieAdapter extends ArrayAdapter<Movie> {  
  17.     private int resource;  
  18.     public MovieAdapter(Context context, int resource, List<Movie> objects) {  
  19.         super(context, resource, objects);  
  20.         // TODO Auto-generated constructor stub  
  21.         this.resource = resource;//resource为listView的每个子项的布局id  
  22.           
  23.     }  
  24.     //getView为listView的每个子项的布局设置内容  
  25.     //convertView用于将之前加载好的布局进行缓存  
  26.     //设置一个viewHolder对控件进行缓存  
  27.     @Override  
  28.     public View getView(int position, View convertView, ViewGroup parent) {  
  29.         // TODO Auto-generated method stub  
  30.         //return super.getView(position, convertView, parent);  
  31.           
  32. //      Fruit fruit = getItem(position);//获得实例  
  33. //      View view;  
  34. //      if(convertView==null){  
  35. //       view = LayoutInflater.from(getContext()).inflate(resource, null);  
  36. //      }else {  
  37. //          view = convertView;  
  38. //      }  
  39. //      ImageView fruitImage =  (ImageView) view.findViewById(R.id.fruit_image);  
  40. //      TextView fruitName = (TextView) view.findViewById(R.id.fruit_name);  
  41. //      fruitImage.setImageResource(fruit.getImageId());  
  42. //      fruitName.setText(fruit.getName());  
  43. //      return view;  
  44.           
  45.         final Movie movie = getItem(position);//获得实例  
  46.         View view;  
  47.         ViewHolder viewHolder;  
  48.         if(convertView==null){  
  49.          view = LayoutInflater.from(getContext()).inflate(resource, null);  
  50.          viewHolder = new ViewHolder();  
  51.          viewHolder.movieImage= (ImageView) view.findViewById(R.id.img_movie);  
  52.          viewHolder.movieTitle =(TextView) view.findViewById(R.id.tv_title);  
  53.          viewHolder.movieContent =(TextView) view.findViewById(R.id.tv_content);  
  54.          viewHolder.movieTime = (TextView) view.findViewById(R.id.tv_time);  
  55.          viewHolder.movieBeginStudy = (ImageView) view.findViewById(R.id.img_movie_beginStudy);  
  56.          view.setTag(viewHolder);  
  57.         }else {  
  58.             view = convertView;  
  59.             viewHolder = (ViewHolder) view.getTag();  
  60.         }  
  61.         viewHolder.movieImage.setImageResource(movie.getImgSrc());  
  62.         viewHolder.movieTitle.setText(movie.getTitle());  
  63.         viewHolder.movieContent.setText(movie.getContent());  
  64.         viewHolder.movieTime.setText(movie.getTime());  
  65.       
  66.         //进入学习监听器  
  67.                 viewHolder.movieBeginStudy.setOnClickListener(new View.OnClickListener() {  
  68.                       
  69.                     @Override  
  70.                     public void onClick(View v) {  
  71.                         // TODO Auto-generated method stub  
  72.                         Toast.makeText(getContext(), movie.getTitle()+"begin study", Toast.LENGTH_SHORT).show();  
  73.                     }  
  74.                 });  
  75.         return view;  
  76.           
  77.     }  
  78. class ViewHolder{  
  79.     TextView movieContent;  
  80.     ImageView movieImage;  
  81.     TextView movieTitle;  
  82.     TextView movieTime;  
  83.     ImageView movieBeginStudy;  
  84. }  
  85. }  

5.MovieListFragment

[java]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. package com.example.fragment;  
  2.   
  3. import java.util.ArrayList;  
  4. import java.util.List;  
  5. import com.example.itingshuo.R;  
  6. import com.movie.Movie;  
  7. import com.movie.MovieAdapter;  
  8. import android.support.v4.app.Fragment;//不知为什么要加这个?  
  9. import android.os.Bundle;  
  10. import android.view.LayoutInflater;  
  11. import android.view.View;  
  12. import android.view.ViewGroup;  
  13. import android.widget.ListView;  
  14.   
  15. public class MovieListFragment extends Fragment {  
  16.       private MovieAdapter adapter = null;    
  17.       private List<Movie> movieList;  
  18.       private ListView movieListView;  
  19.         @Override    
  20.         public void onCreate(Bundle savedInstanceState) {    
  21.             super.onCreate(savedInstanceState);    
  22.              
  23.             
  24.         }    
  25.         
  26.         @Override    
  27.         public View onCreateView(LayoutInflater inflater, ViewGroup container,    
  28.                 Bundle savedInstanceState) {    
  29.              Classinit();  
  30.             View v = inflater.inflate(R.layout.movie_list_fragment,null);    
  31.             movieListView = (ListView) v.findViewById(R.id.lv_movie);  
  32.             adapter = new MovieAdapter(getActivity(), R.layout.movie_item, movieList);    
  33.             movieListView.setAdapter(adapter);  
  34.             return v;    
  35.         }    
  36.             
  37.         public void Classinit(){  
  38.             movieList= new ArrayList<Movie>();  
  39.             Movie movie1 = new Movie();  
  40.             movie1.setTitle("movie1");  
  41.             movie1.setContent("movieContent1");  
  42.             movie1.setTime("07:30");  
  43.             movie1.setImgSrc(R.drawable.image_arrrow);  
  44.             movieList.add(movie1);  
  45.             Movie movie2 = new Movie();  
  46.             movie2.setTitle("movie2");  
  47.             movie2.setContent("movieContent2");  
  48.             movie2.setTime("07:30");  
  49.             movie2.setImgSrc(R.drawable.image_arrrow);  
  50.             movieList.add(movie2);  
  51.             Movie movie3 = new Movie();  
  52.             movie3.setTitle("movie3");  
  53.             movie3.setContent("movieContent3");  
  54.             movie3.setTime("07:30");  
  55.             movie3.setImgSrc(R.drawable.image_arrrow);  
  56.             movieList.add(movie3);  
  57.             Movie movie4 = new Movie();  
  58.             movie4.setTitle("movie4");  
  59.             movie4.setContent("movieContent4");  
  60.             movie4.setTime("07:30");  
  61.             movie4.setImgSrc(R.drawable.image_arrrow);  
  62.             movieList.add(movie4);  
  63.             Movie movie5 = new Movie();  
  64.             movie5.setTitle("movie5");  
  65.             movie5.setContent("movieContent5");  
  66.             movie5.setTime("07:30");  
  67.             movie5.setImgSrc(R.drawable.image_arrrow);  
  68.             movieList.add(movie5);  
  69.             Movie movie6 = new Movie();  
  70.             movie6.setTitle("movie6");  
  71.             movie6.setContent("movieContent6");  
  72.             movie6.setTime("07:30");  
  73.             movie6.setImgSrc(R.drawable.image_arrrow);  
  74.             movieList.add(movie6);  
  75.             Movie movie7 = new Movie();  
  76.             movie7.setTitle("movie7");  
  77.             movie7.setContent("movieContent7");  
  78.             movie7.setTime("07:30");  
  79.             movie7.setImgSrc(R.drawable.image_arrrow);  
  80.             movieList.add(movie7);  
  81.         }  
  82. }  

5.MainActivity(这里实现了tab+fragment的效果)

[java]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. package com.example.itingshuo;  
  2.   
  3. import java.util.ArrayList;  
  4.   
  5. import android.app.ListFragment;  
  6. import android.os.Bundle;  
  7. import android.support.v4.app.Fragment;  
  8. import android.support.v4.app.FragmentActivity;  
  9. import android.support.v4.app.FragmentStatePagerAdapter;  
  10. import android.support.v4.view.ViewPager;  
  11. import android.support.v4.view.ViewPager.OnPageChangeListener;  
  12. import android.view.KeyEvent;  
  13. import android.view.View;  
  14. import android.view.Window;  
  15. import android.view.View.OnClickListener;  
  16. import android.widget.ImageView;  
  17. import android.widget.TextView;  
  18. import android.widget.Toast;  
  19.   
  20. import com.example.fragment.MovieEmotionFragment;  
  21. import com.example.fragment.MovieListFragment;  
  22. import com.example.fragment.SpeakClassFragment;  
  23. import com.example.fragment.ToneListFragment;  
  24. import com.nineoldandroids.view.ViewPropertyAnimator;  
  25.   
  26. public class MainActivity extends FragmentActivity {  
  27.   
  28.     private ArrayList<Fragment> fragments;  
  29.   
  30.     private ViewPager viewPager;  
  31.   
  32.     private ImageView tab_speak;  
  33.   
  34.     private ImageView tab_movie;  
  35.       
  36.     private ImageView tab_tone;  
  37.   
  38.     private int line_width;  
  39.   
  40.     private View line;  
  41.   
  42.       
  43.   
  44.     @Override  
  45.     protected void onCreate(Bundle savedInstanceState) {  
  46.         super.onCreate(savedInstanceState);  
  47.         this.requestWindowFeature(Window.FEATURE_NO_TITLE);  
  48.         setContentView(R.layout.activity_main);  
  49.   
  50.         tab_speak = (ImageView) findViewById(R.id.tab_speak);  
  51.         tab_movie = (ImageView) findViewById(R.id.tab_movie);  
  52.         tab_tone = (ImageView) findViewById(R.id.tab_tone);  
  53.         line = findViewById(R.id.line);  
  54.           
  55.         changeState(0);  
  56.         // 初始化TextView动画  
  57. //      ViewPropertyAnimator.animate(tab_movie).scaleX(1.2f).setDuration(0);  
  58. //      ViewPropertyAnimator.animate(tab_movie).scaleY(1.2f).setDuration(0);  
  59.          
  60.         fragments = new ArrayList<Fragment>();  
  61.         //fragments.add(new MovieFragment());//电影情感选择,不是列表  
  62.         fragments.add(new MovieListFragment());//电影列表选择  
  63.         fragments.add(new SpeakClassFragment());//语调选择  
  64.         fragments.add(new ToneListFragment());//文章选择  
  65.         line_width = getWindowManager().getDefaultDisplay().getWidth()  
  66.                 / fragments.size();  
  67.         line.getLayoutParams().width = line_width;  
  68.         line.requestLayout();  
  69.   
  70.         viewPager = (ViewPager) findViewById(R.id.viewPager);  
  71.         viewPager.setAdapter(new FragmentStatePagerAdapter(  
  72.                 getSupportFragmentManager()) {  
  73.   
  74.             @Override  
  75.             public int getCount() {  
  76.                 return fragments.size();  
  77.             }  
  78.   
  79.             @Override  
  80.             public Fragment getItem(int arg0) {  
  81.                 return fragments.get(arg0);  
  82.             }  
  83.         });  
  84.   
  85.         viewPager.setOnPageChangeListener(new OnPageChangeListener() {  
  86.   
  87.             @Override  
  88.             public void onPageSelected(int arg0) {  
  89.                 changeState(arg0);  
  90.             }  
  91.   
  92.             @Override  
  93.             public void onPageScrolled(int arg0, float arg1, int arg2) {  
  94.                 float tagerX = arg0 * line_width + arg2 / fragments.size();  
  95.                 ViewPropertyAnimator.animate(line).translationX(tagerX)  
  96.                         .setDuration(0);  
  97.             }  
  98.   
  99.             @Override  
  100.             public void onPageScrollStateChanged(int arg0) {  
  101.   
  102.             }  
  103.         });  
  104.   
  105.         tab_speak.setOnClickListener(new OnClickListener() {  
  106.   
  107.             @Override  
  108.             public void onClick(View arg0) {  
  109.                 viewPager.setCurrentItem(1);  
  110.                   
  111.             }  
  112.         });  
  113.         tab_tone.setOnClickListener(new OnClickListener() {  
  114.   
  115.             @Override  
  116.             public void onClick(View arg0) {  
  117.                 viewPager.setCurrentItem(2);  
  118.                   
  119.             }  
  120.         });  
  121.   
  122.         tab_movie.setOnClickListener(new OnClickListener() {  
  123.   
  124.             @Override  
  125.             public void onClick(View arg0) {  
  126.                 viewPager.setCurrentItem(0);  
  127.             }  
  128.         });  
  129.     }  
  130.   
  131.     /* 根据传入的值来改变状态 */  
  132.     private void changeState(int arg0) {  
  133.         if (arg0 == 0) {  
  134.             tab_movie.setImageDrawable(getResources().getDrawable(R.drawable.tab_movie_click));  
  135.             tab_speak.setImageDrawable(getResources().getDrawable(R.drawable.tab_speak));  
  136.             tab_tone.setImageDrawable(getResources().getDrawable(R.drawable.tab_tone));  
  137.             ViewPropertyAnimator.animate(tab_movie).scaleX(1.2f).setDuration(200);  
  138.             ViewPropertyAnimator.animate(tab_movie).scaleY(1.2f).setDuration(200);  
  139.             ViewPropertyAnimator.animate(tab_speak).scaleX(1.0f).setDuration(200);  
  140.             ViewPropertyAnimator.animate(tab_speak).scaleY(1.0f).setDuration(200);  
  141.             ViewPropertyAnimator.animate(tab_tone).scaleX(1.0f).setDuration(200);  
  142.             ViewPropertyAnimator.animate(tab_tone).scaleY(1.0f).setDuration(200);  
  143.   
  144.         } else if(arg0 == 1){  
  145.             tab_speak.setImageDrawable(getResources().getDrawable(R.drawable.tab_speak_click));  
  146.             tab_movie.setImageDrawable(getResources().getDrawable(R.drawable.tab_movie));  
  147.             tab_tone.setImageDrawable(getResources().getDrawable(R.drawable.tab_tone));  
  148.             ViewPropertyAnimator.animate(tab_tone).scaleX(1.0f).setDuration(200);  
  149.             ViewPropertyAnimator.animate(tab_tone).scaleY(1.0f).setDuration(200);  
  150.             ViewPropertyAnimator.animate(tab_movie).scaleX(1.0f).setDuration(200);  
  151.             ViewPropertyAnimator.animate(tab_movie).scaleY(1.0f).setDuration(200);  
  152.             ViewPropertyAnimator.animate(tab_speak).scaleX(1.2f).setDuration(200);  
  153.             ViewPropertyAnimator.animate(tab_speak).scaleY(1.2f).setDuration(200);  
  154.         }else{  
  155.             tab_tone.setImageResource(R.drawable.tab_tone_click);  
  156.             tab_movie.setImageResource(R.drawable.tab_movie);  
  157.             tab_speak.setImageResource(R.drawable.tab_speak);  
  158.             ViewPropertyAnimator.animate(tab_movie).scaleX(1.0f).setDuration(200);  
  159.             ViewPropertyAnimator.animate(tab_movie).scaleY(1.0f).setDuration(200);  
  160.             ViewPropertyAnimator.animate(tab_speak).scaleX(1.0f).setDuration(200);  
  161.             ViewPropertyAnimator.animate(tab_speak).scaleY(1.0f).setDuration(200);  
  162.             ViewPropertyAnimator.animate(tab_tone).scaleX(1.2f).setDuration(200);  
  163.             ViewPropertyAnimator.animate(tab_tone).scaleY(1.2f).setDuration(200);  
  164.         }  
  165.     }  
  166.   
  167.       
  168. }  
  1.        android:layout_weight="2"  
  2.        android:gravity="center">  
  3.        <ImageView   
  4.            android:id="@+id/img_movie"  
  5.            android:layout_width="80dp"  
  6.            android:layout_height="80dp"  
  7.            android:layout_gravity="center"/>  
  8.    </LinearLayout>  
  9.    <RelativeLayout   
  10.        android:layout_width="wrap_content"  
  11.        android:layout_height="match_parent"  
  12.        android:layout_weight="4.5"  
  13.        android:paddingTop="8dp"   
  14.        android:paddingBottom="8dp"  
  15.        >  
  16.        <TextView   
  17.            android:id="@+id/tv_title"  
  18.            android:layout_width="wrap_content"  
  19.            android:layout_height="wrap_content"  
  20.            android:text="标题"  
  21.            android:textSize="18sp"  
  22.           android:layout_alignParentTop="true"/>  
  23.         <TextView   
  24.               android:id="@+id/tv_content"  
  25.              android:layout_width="wrap_content"  
  26.              android:layout_height="wrap_content"     
  27.              android:textSize="13sp"   
  28.              android:layout_centerVertical="true"  
  29.              android:maxLines="1"  
  30.              android:text="内容"  
  31.            />  
  32.         <ImageView   
  33.            android:id="@+id/img_movie_beginStudy"  
  34.             android:layout_width="60dp"  
  35.             android:layout_height="20dp"  
  36.             android:background="@drawable/beginstudy"  
  37.             android:layout_alignParentBottom="true"/>  
  38.    </RelativeLayout>  
  39.     <LinearLayout   
  40.        android:layout_width="wrap_content"  
  41.        android:layout_height="wrap_content"  
  42.        android:layout_weight="1"  
  43.        android:paddingTop="8dp"   
  44.        android:paddingBottom="8dp"  
  45.        android:gravity="right">  
  46.        <TextView   
  47.              android:id="@+id/tv_time"  
  48.            android:layout_width="wrap_content"  
  49.             android:layout_height="wrap_content"  
  50.             android:text="TIME"  
  51.             android:textSize="13sp"  
  52.             android:paddingRight="5dp"  
  53.            />  
  54.    </LinearLayout>  
  55.   
  56. </LinearLayout>  

3.movie_list_fragment

[html]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:layout_width="match_parent"  
  4.     android:layout_height="match_parent"  
  5.     android:gravity="center"  
  6.     android:orientation="vertical" >  
  7.   
  8.     <ListView   
  9.     android:id="@+id/lv_movie"  
  10.     android:layout_width="match_parent"  
  11.     android:layout_height="match_parent"></ListView>  
  12.   
  13. </LinearLayout>  

4.MovieAdapter(Movie需要final才能被内部类使用)

[java]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. package com.movie;  
  2.   
  3. import java.util.List;  
  4.   
  5. import android.content.Context;  
  6. import android.view.LayoutInflater;  
  7. import android.view.View;  
  8. import android.view.ViewGroup;  
  9. import android.widget.ArrayAdapter;  
  10. import android.widget.ImageView;  
  11. import android.widget.TextView;  
  12. import android.widget.Toast;  
  13.   
  14. import com.example.itingshuo.R;  
  15.   
  16. public class MovieAdapter extends ArrayAdapter<Movie> {  
  17.     private int resource;  
  18.     public MovieAdapter(Context context, int resource, List<Movie> objects) {  
  19.         super(context, resource, objects);  
  20.         // TODO Auto-generated constructor stub  
  21.         this.resource = resource;//resource为listView的每个子项的布局id  
  22.           
  23.     }  
  24.     //getView为listView的每个子项的布局设置内容  
  25.     //convertView用于将之前加载好的布局进行缓存  
  26.     //设置一个viewHolder对控件进行缓存  
  27.     @Override  
  28.     public View getView(int position, View convertView, ViewGroup parent) {  
  29.         // TODO Auto-generated method stub  
  30.         //return super.getView(position, convertView, parent);  
  31.           
  32. //      Fruit fruit = getItem(position);//获得实例  
  33. //      View view;  
  34. //      if(convertView==null){  
  35. //       view = LayoutInflater.from(getContext()).inflate(resource, null);  
  36. //      }else {  
  37. //          view = convertView;  
  38. //      }  
  39. //      ImageView fruitImage =  (ImageView) view.findViewById(R.id.fruit_image);  
  40. //      TextView fruitName = (TextView) view.findViewById(R.id.fruit_name);  
  41. //      fruitImage.setImageResource(fruit.getImageId());  
  42. //      fruitName.setText(fruit.getName());  
  43. //      return view;  
  44.           
  45.         final Movie movie = getItem(position);//获得实例  
  46.         View view;  
  47.         ViewHolder viewHolder;  
  48.         if(convertView==null){  
  49.          view = LayoutInflater.from(getContext()).inflate(resource, null);  
  50.          viewHolder = new ViewHolder();  
  51.          viewHolder.movieImage= (ImageView) view.findViewById(R.id.img_movie);  
  52.          viewHolder.movieTitle =(TextView) view.findViewById(R.id.tv_title);  
  53.          viewHolder.movieContent =(TextView) view.findViewById(R.id.tv_content);  
  54.          viewHolder.movieTime = (TextView) view.findViewById(R.id.tv_time);  
  55.          viewHolder.movieBeginStudy = (ImageView) view.findViewById(R.id.img_movie_beginStudy);  
  56.          view.setTag(viewHolder);  
  57.         }else {  
  58.             view = convertView;  
  59.             viewHolder = (ViewHolder) view.getTag();  
  60.         }  
  61.         viewHolder.movieImage.setImageResource(movie.getImgSrc());  
  62.         viewHolder.movieTitle.setText(movie.getTitle());  
  63.         viewHolder.movieContent.setText(movie.getContent());  
  64.         viewHolder.movieTime.setText(movie.getTime());  
  65.       
  66.         //进入学习监听器  
  67.                 viewHolder.movieBeginStudy.setOnClickListener(new View.OnClickListener() {  
  68.                       
  69.                     @Override  
  70.                     public void onClick(View v) {  
  71.                         // TODO Auto-generated method stub  
  72.                         Toast.makeText(getContext(), movie.getTitle()+"begin study", Toast.LENGTH_SHORT).show();  
  73.                     }  
  74.                 });  
  75.         return view;  
  76.           
  77.     }  
  78. class ViewHolder{  
  79.     TextView movieContent;  
  80.     ImageView movieImage;  
  81.     TextView movieTitle;  
  82.     TextView movieTime;  
  83.     ImageView movieBeginStudy;  
  84. }  
  85. }  

5.MovieListFragment

[java]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. package com.example.fragment;  
  2.   
  3. import java.util.ArrayList;  
  4. import java.util.List;  
  5. import com.example.itingshuo.R;  
  6. import com.movie.Movie;  
  7. import com.movie.MovieAdapter;  
  8. import android.support.v4.app.Fragment;//不知为什么要加这个?  
  9. import android.os.Bundle;  
  10. import android.view.LayoutInflater;  
  11. import android.view.View;  
  12. import android.view.ViewGroup;  
  13. import android.widget.ListView;  
  14.   
  15. public class MovieListFragment extends Fragment {  
  16.       private MovieAdapter adapter = null;    
  17.       private List<Movie> movieList;  
  18.       private ListView movieListView;  
  19.         @Override    
  20.         public void onCreate(Bundle savedInstanceState) {    
  21.             super.onCreate(savedInstanceState);    
  22.              
  23.             
  24.         }    
  25.         
  26.         @Override    
  27.         public View onCreateView(LayoutInflater inflater, ViewGroup container,    
  28.                 Bundle savedInstanceState) {    
  29.              Classinit();  
  30.             View v = inflater.inflate(R.layout.movie_list_fragment,null);    
  31.             movieListView = (ListView) v.findViewById(R.id.lv_movie);  
  32.             adapter = new MovieAdapter(getActivity(), R.layout.movie_item, movieList);    
  33.             movieListView.setAdapter(adapter);  
  34.             return v;    
  35.         }    
  36.             
  37.         public void Classinit(){  
  38.             movieList= new ArrayList<Movie>();  
  39.             Movie movie1 = new Movie();  
  40.             movie1.setTitle("movie1");  
  41.             movie1.setContent("movieContent1");  
  42.             movie1.setTime("07:30");  
  43.             movie1.setImgSrc(R.drawable.image_arrrow);  
  44.             movieList.add(movie1);  
  45.             Movie movie2 = new Movie();  
  46.             movie2.setTitle("movie2");  
  47.             movie2.setContent("movieContent2");  
  48.             movie2.setTime("07:30");  
  49.             movie2.setImgSrc(R.drawable.image_arrrow);  
  50.             movieList.add(movie2);  
  51.             Movie movie3 = new Movie();  
  52.             movie3.setTitle("movie3");  
  53.             movie3.setContent("movieContent3");  
  54.             movie3.setTime("07:30");  
  55.             movie3.setImgSrc(R.drawable.image_arrrow);  
  56.             movieList.add(movie3);  
  57.             Movie movie4 = new Movie();  
  58.             movie4.setTitle("movie4");  
  59.             movie4.setContent("movieContent4");  
  60.             movie4.setTime("07:30");  
  61.             movie4.setImgSrc(R.drawable.image_arrrow);  
  62.             movieList.add(movie4);  
  63.             Movie movie5 = new Movie();  
  64.             movie5.setTitle("movie5");  
  65.             movie5.setContent("movieContent5");  
  66.             movie5.setTime("07:30");  
  67.             movie5.setImgSrc(R.drawable.image_arrrow);  
  68.             movieList.add(movie5);  
  69.             Movie movie6 = new Movie();  
  70.             movie6.setTitle("movie6");  
  71.             movie6.setContent("movieContent6");  
  72.             movie6.setTime("07:30");  
  73.             movie6.setImgSrc(R.drawable.image_arrrow);  
  74.             movieList.add(movie6);  
  75.             Movie movie7 = new Movie();  
  76.             movie7.setTitle("movie7");  
  77.             movie7.setContent("movieContent7");  
  78.             movie7.setTime("07:30");  
  79.             movie7.setImgSrc(R.drawable.image_arrrow);  
  80.             movieList.add(movie7);  
  81.         }  
  82. }  

5.MainActivity(这里实现了tab+fragment的效果)

[java]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. package com.example.itingshuo;  
  2.   
  3. import java.util.ArrayList;  
  4.   
  5. import android.app.ListFragment;  
  6. import android.os.Bundle;  
  7. import android.support.v4.app.Fragment;  
  8. import android.support.v4.app.FragmentActivity;  
  9. import android.support.v4.app.FragmentStatePagerAdapter;  
  10. import android.support.v4.view.ViewPager;  
  11. import android.support.v4.view.ViewPager.OnPageChangeListener;  
  12. import android.view.KeyEvent;  
  13. import android.view.View;  
  14. import android.view.Window;  
  15. import android.view.View.OnClickListener;  
  16. import android.widget.ImageView;  
  17. import android.widget.TextView;  
  18. import android.widget.Toast;  
  19.   
  20. import com.example.fragment.MovieEmotionFragment;  
  21. import com.example.fragment.MovieListFragment;  
  22. import com.example.fragment.SpeakClassFragment;  
  23. import com.example.fragment.ToneListFragment;  
  24. import com.nineoldandroids.view.ViewPropertyAnimator;  
  25.   
  26. public class MainActivity extends FragmentActivity {  
  27.   
  28.     private ArrayList<Fragment> fragments;  
  29.   
  30.     private ViewPager viewPager;  
  31.   
  32.     private ImageView tab_speak;  
  33.   
  34.     private ImageView tab_movie;  
  35.       
  36.     private ImageView tab_tone;  
  37.   
  38.     private int line_width;  
  39.   
  40.     private View line;  
  41.   
  42.       
  43.   
  44.     @Override  
  45.     protected void onCreate(Bundle savedInstanceState) {  
  46.         super.onCreate(savedInstanceState);  
  47.         this.requestWindowFeature(Window.FEATURE_NO_TITLE);  
  48.         setContentView(R.layout.activity_main);  
  49.   
  50.         tab_speak = (ImageView) findViewById(R.id.tab_speak);  
  51.         tab_movie = (ImageView) findViewById(R.id.tab_movie);  
  52.         tab_tone = (ImageView) findViewById(R.id.tab_tone);  
  53.         line = findViewById(R.id.line);  
  54.           
  55.         changeState(0);  
  56.         // 初始化TextView动画  
  57. //      ViewPropertyAnimator.animate(tab_movie).scaleX(1.2f).setDuration(0);  
  58. //      ViewPropertyAnimator.animate(tab_movie).scaleY(1.2f).setDuration(0);  
  59.          
  60.         fragments = new ArrayList<Fragment>();  
  61.         //fragments.add(new MovieFragment());//电影情感选择,不是列表  
  62.         fragments.add(new MovieListFragment());//电影列表选择  
  63.         fragments.add(new SpeakClassFragment());//语调选择  
  64.         fragments.add(new ToneListFragment());//文章选择  
  65.         line_width = getWindowManager().getDefaultDisplay().getWidth()  
  66.                 / fragments.size();  
  67.         line.getLayoutParams().width = line_width;  
  68.         line.requestLayout();  
  69.   
  70.         viewPager = (ViewPager) findViewById(R.id.viewPager);  
  71.         viewPager.setAdapter(new FragmentStatePagerAdapter(  
  72.                 getSupportFragmentManager()) {  
  73.   
  74.             @Override  
  75.             public int getCount() {  
  76.                 return fragments.size();  
  77.             }  
  78.   
  79.             @Override  
  80.             public Fragment getItem(int arg0) {  
  81.                 return fragments.get(arg0);  
  82.             }  
  83.         });  
  84.   
  85.         viewPager.setOnPageChangeListener(new OnPageChangeListener() {  
  86.   
  87.             @Override  
  88.             public void onPageSelected(int arg0) {  
  89.                 changeState(arg0);  
  90.             }  
  91.   
  92.             @Override  
  93.             public void onPageScrolled(int arg0, float arg1, int arg2) {  
  94.                 float tagerX = arg0 * line_width + arg2 / fragments.size();  
  95.                 ViewPropertyAnimator.animate(line).translationX(tagerX)  
  96.                         .setDuration(0);  
  97.             }  
  98.   
  99.             @Override  
  100.             public void onPageScrollStateChanged(int arg0) {  
  101.   
  102.             }  
  103.         });  
  104.   
  105.         tab_speak.setOnClickListener(new OnClickListener() {  
  106.   
  107.             @Override  
  108.             public void onClick(View arg0) {  
  109.                 viewPager.setCurrentItem(1);  
  110.                   
  111.             }  
  112.         });  
  113.         tab_tone.setOnClickListener(new OnClickListener() {  
  114.   
  115.             @Override  
  116.             public void onClick(View arg0) {  
  117.                 viewPager.setCurrentItem(2);  
  118.                   
  119.             }  
  120.         });  
  121.   
  122.         tab_movie.setOnClickListener(new OnClickListener() {  
  123.   
  124.             @Override  
  125.             public void onClick(View arg0) {  
  126.                 viewPager.setCurrentItem(0);  
  127.             }  
  128.         });  
  129.     }  
  130.   
  131.     /* 根据传入的值来改变状态 */  
  132.     private void changeState(int arg0) {  
  133.         if (arg0 == 0) {  
  134.             tab_movie.setImageDrawable(getResources().getDrawable(R.drawable.tab_movie_click));  
  135.             tab_speak.setImageDrawable(getResources().getDrawable(R.drawable.tab_speak));  
  136.             tab_tone.setImageDrawable(getResources().getDrawable(R.drawable.tab_tone));  
  137.             ViewPropertyAnimator.animate(tab_movie).scaleX(1.2f).setDuration(200);  
  138.             ViewPropertyAnimator.animate(tab_movie).scaleY(1.2f).setDuration(200);  
  139.             ViewPropertyAnimator.animate(tab_speak).scaleX(1.0f).setDuration(200);  
  140.             ViewPropertyAnimator.animate(tab_speak).scaleY(1.0f).setDuration(200);  
  141.             ViewPropertyAnimator.animate(tab_tone).scaleX(1.0f).setDuration(200);  
  142.             ViewPropertyAnimator.animate(tab_tone).scaleY(1.0f).setDuration(200);  
  143.   
  144.         } else if(arg0 == 1){  
  145.             tab_speak.setImageDrawable(getResources().getDrawable(R.drawable.tab_speak_click));  
  146.             tab_movie.setImageDrawable(getResources().getDrawable(R.drawable.tab_movie));  
  147.             tab_tone.setImageDrawable(getResources().getDrawable(R.drawable.tab_tone));  
  148.             ViewPropertyAnimator.animate(tab_tone).scaleX(1.0f).setDuration(200);  
  149.             ViewPropertyAnimator.animate(tab_tone).scaleY(1.0f).setDuration(200);  
  150.             ViewPropertyAnimator.animate(tab_movie).scaleX(1.0f).setDuration(200);  
  151.             ViewPropertyAnimator.animate(tab_movie).scaleY(1.0f).setDuration(200);  
  152.             ViewPropertyAnimator.animate(tab_speak).scaleX(1.2f).setDuration(200);  
  153.             ViewPropertyAnimator.animate(tab_speak).scaleY(1.2f).setDuration(200);  
  154.         }else{  
  155.             tab_tone.setImageResource(R.drawable.tab_tone_click);  
  156.             tab_movie.setImageResource(R.drawable.tab_movie);  
  157.             tab_speak.setImageResource(R.drawable.tab_speak);  
  158.             ViewPropertyAnimator.animate(tab_movie).scaleX(1.0f).setDuration(200);  
  159.             ViewPropertyAnimator.animate(tab_movie).scaleY(1.0f).setDuration(200);  
  160.             ViewPropertyAnimator.animate(tab_speak).scaleX(1.0f).setDuration(200);  
  161.             ViewPropertyAnimator.animate(tab_speak).scaleY(1.0f).setDuration(200);  
  162.             ViewPropertyAnimator.animate(tab_tone).scaleX(1.2f).setDuration(200);  
  163.             ViewPropertyAnimator.animate(tab_tone).scaleY(1.2f).setDuration(200);  
  164.         }  
  165.     }  
  166.   
  167.       
  168. }  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值