public class MainActivity extends AppCompatActivity {
private FeatureCoverFlow coverFlow;
private CoverFlowAdapter adapter;
private ArrayList<Game> games;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
coverFlow = (FeatureCoverFlow) findViewById(R.id.coverflow);
settingDummyData();
adapter = new CoverFlowAdapter(this, games);
coverFlow.setAdapter(adapter);
coverFlow.setOnScrollPositionListener(onScrollListener());
}
private FeatureCoverFlow.OnScrollPositionListener onScrollListener() {
return new FeatureCoverFlow.OnScrollPositionListener() {
@Override
public void onScrolledToPosition(int position) {
Log.v("MainActiivty", "position: " + position);
}
@Override
public void onScrolling() {
Log.i("MainActivity", "scrolling");
}
};
}
private void settingDummyData() {
games = new ArrayList<>();
games.add(new Game(R.mipmap.assassins_creed, "Assassin Creed 3"));
games.add(new Game(R.mipmap.avatar_3d, "Avatar 3D"));
games.add(new Game(R.mipmap.call_of_duty_black_ops_3, "Call Of Duty Black Ops 3"));
games.add(new Game(R.mipmap.dota_2, "DotA 2"));
games.add(new Game(R.mipmap.halo_5, "Halo 5"));
games.add(new Game(R.mipmap.left_4_dead_2, "Left 4 Dead 2"));
games.add(new Game(R.mipmap.starcraft, "StarCraft"));
games.add(new Game(R.mipmap.the_witcher_3, "The Witcher 3"));
games.add(new Game(R.mipmap.tomb_raider, "Tom raider 3"));
games.add(new Game(R.mipmap.need_for_speed_most_wanted, "Need for Speed Most Wanted"));
}
}
//这是我的活动
public class CoverFlowAdapter extends BaseAdapter {
private ArrayList<Game> data;
private AppCompatActivity activity;
public CoverFlowAdapter(AppCompatActivity context, ArrayList<Game> objects) {
this.activity = context;
this.data = objects;
}
@Override
public int getCount() {
return data.size();
}
@Override
public Game getItem(int position) {
return data.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder;
if (convertView == null) {
LayoutInflater inflater = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.item_flow_view, null, false);
viewHolder = new ViewHolder(convertView);
convertView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) convertView.getTag();
}
viewHolder.gameImage.setImageResource(data.get(position).getImageSource());
viewHolder.gameName.setText(data.get(position).getName());
convertView.setOnClickListener(onClickListener(position));
return convertView;
}
private View.OnClickListener onClickListener(final int position) {
return new View.OnClickListener() {
@Override
public void onClick(View v) {
final Dialog dialog = new Dialog(activity);
dialog.setContentView(R.layout.dialog_game_info);
dialog.setCancelable(true); // dimiss when touching outside
dialog.setTitle("Game Details");
TextView text = (TextView) dialog.findViewById(R.id.name);
text.setText(getItem(position).getName());
ImageView image = (ImageView) dialog.findViewById(R.id.image);
image.setImageResource(getItem(position).getImageSource());
dialog.show();
}
};
}
private static class ViewHolder {
private TextView gameName;
private ImageView gameImage;
public ViewHolder(View v) {
gameImage = (ImageView) v.findViewById(R.id.image);
gameName = (TextView) v.findViewById(R.id.name);
}
}
}
//这是我的适配器。现在每个人都运行正常,但我想垂直制作这个封面流。在xml中没有设置方向的选项..我试过http://www.codeproject.com/Articles/146145/Android-3D-Carousel ..但我不想要这种类型的旋转木马布局我需要简单的垂直旋转木马布局。
答案 0 :(得分:0)
现在您可以使用viewpager2实现此目的。我们可以指定方向,例如recyclerview'viewPager.orientation = ORIENTATION_VERTICAL'。
经历这个
https://developer.android.com/jetpack/androidx/releases/viewpager2
https://medium.com/google-developer-experts/exploring-the-view-pager-2-86dbce06ff71
答案 1 :(得分:0)
有很多解决方法可以实现它。但是我更喜欢使用支持垂直方向的viewPager2。
或者您可以使用库来实现它,例如this library