0

私が解決策なしで頭を悩ませてきた何か。私が欲しいものを説明する最も簡単な方法は、私が作成したこのpngです:http://i.imgur.com/42XLi.png

したがって、最初の画面に4つのTextViewとImageViewがあり、スワイプした場合に同じアニメーション効果で他の画面に移動できるようにしたいと考えています。これを行うアプリはたくさんありますが、実際に自分で実装する方法を見つけることはできません。明らかに、OnClickListenerを使用して、最初にImageViewsとTextViewsをクリック可能にする必要があります。私はそこで何をしますか?

私はすでにフラグメントを使用して水平スクロールを設定していますが、パズルのこの最後のピースは私が苦労しているものです。ユーザーが自分のアプリをナビゲートする方法を選択できるようにしたいのですが、ImageViews / TextViewsをクリックしてスワイプする人もいれば、右にスワイプして他のフラグメントに移動する人もいます。

うまくいけば、私はこれを正しく説明しました。実際、Playストアは、タブを使用する場合を除いて、私が望むことを実行します(トップフリーからトップペイドへの移行など)。それは私が使いたくないものです(タブ)。TextViewsとImageViewsに設定されたonClicksを介してそれを複製できることを望んでいます。

助けていただければ幸いです。私はサポートライブラリを使用してこれを行ったので、それが違いを生むのであれば、3.0以降だけではありません。

編集:実際、いくつかの調査をしているときに、「FragmentTransaction」と呼ばれるものに出くわしました。これをすべて行う正しい方法ですか?出くわしたばかりなので、よくわかりません。

4

1 に答える 1

1

あなたが探しているのはですViewPager。目的の動作を作成する方法を示すために、小さなサンプルを作成しました。

private class MyAdapter extends FragmentPagerAdapter {

    public MyAdapter(FragmentManager fm) {
        super(fm);
    }

    @Override
    public Fragment getItem(int position) {
        if (position == 0) {
            return StarterFragment.newInstance(R.id.viewPagerIdFromTheLayout);
        } else {
            return NormalFragment.newInstance(position);
        }
    }

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

}

public static class StarterFragment extends ListFragment {

    public static StarterFragment newInstance(int pagerId) {
        StarterFragment sf = new StarterFragment();
        Bundle args = new Bundle();
        args.putInt("pagerId", pagerId);
        sf.setArguments(args);
        return sf;
    }

    @Override
    public void onListItemClick(ListView l, View v, int position, long id) {
        ((ViewPager) getActivity().findViewById(
                getArguments().getInt("pagerId"))).setCurrentItem(position,
                true);
    }

    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        setListAdapter(new ArrayAdapter<String>(getActivity(),
                android.R.layout.simple_list_item_1, new String[] { "None",
                        "First Page", "Second Page", "Third Page", "Forth Page" }));
    }

}

public static class NormalFragment extends Fragment {

    public static NormalFragment newInstance(int position) {
        NormalFragment nf = new NormalFragment();
        Bundle args = new Bundle();
        args.putInt("position", position);
        nf.setArguments(args);
        return nf;
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        TextView tv = new TextView(getActivity());
        tv.setText("Fragment no." + getArguments().getInt("position"));
        return tv;
    }

}

コードは次のようになります。ViewPager上記のアダプタを使用してを作成します。これViewPagerには2つのタイプがあります。1つはFragmentsすべての方向性を持ち、もう1つはスクロールButtonsする通常のタイプです。Fragments簡単にするためにListFragment、を使用しました。独自のレイアウトを使用しButtons、コードを簡単に適応させることができます。これに、からFragmentのIDを渡して、後で使用します。ユーザーが最初からのいずれかをクリックすると、そのメソッドで、とを使用してを検索し、そのメソッドを使用してそのまでスクロールします。によるViewPagerFragmentActivityButtonsFragmentonClickButtongetActivity()findViewByIdViewPagersetCurrentItem(position, true)FragmentViewPagerの間を手動でスワイプすることはできFragmentsます。

于 2012-11-21T11:07:44.267 に答える