3

Teechart API (ここで入手可能: http://www.steema.com/teechart/mobile ) とリストビュー ネイティブを使用した棒グラフ ビューの 2 つの形式でエンド ユーザーにデータを提供できるアクティビティを持つアプリケーションをコーディングしています。アンドロイドで。現在、私はそのようないくつかのロジックを持っています

最初に私は初期化しますboolean flag = true;

次に、このボタン ロジックを使用してビューを切り替えます。

OnClickListener changeViewListener = new OnClickListener(){

  public void onClick(View v){
    if(!flag){
       listLayout.setVisibility(View.GONE);
       chartView.setVisibility(View.VISIBLE);
       changeView.setText("List");
       flag = true;
    }else{
       listLayout.setVisibility(View.VISIBLE);
       chartView.setVisibility(View.GONE);
       changeView.setText("Graph");
       flag = false;
    }
  }
};

このコードはうまく機能し、問題はありません。ビューフリッパーを使用するなど、より良い方法でこれを行うことができるかどうか疑問に思っていますか? もしそうなら、これらの 2 つのビューを切り替えるビュー フリッパー コードをどのように実装すればよいでしょうか?

または、ビューごとにフラグメントを使用する必要がありますか? どんな助けでも大歓迎です。

4

2 に答える 2

6

多分これはあなたに役立つかもしれません: ビュー間でアニメーション化する

これは一般的な例です。微調整して、必要な反転効果を得ることができます。

更新: このチュートリアルには、さまざまなアニメーション ドキュメントへのリンクも含まれています。そのことから、回転アニメーションを使用して反転効果を作成できると思います。ビューを回転させる回転角度とピボットを指定できます。

概念は、一方のビューを外側に回転させもう一方のビューを内側に回転させるというものです。

アップデート:

ビュー フリッパーは、ビュー間のアニメーションの実装です。私が投稿した上記の方法は一般的なものでした。値をいじって、より細かく制御できるアニメーションを作成できます。他の人が試したことのないビュー間の遷移を作成できます。

ビュー フリッパーの手順:

1. View Flipper で、Layout XML ファイルに Flipper 要素を定義します。このフリッパー要素に、2 つの子要素を追加します。これは、単純に 2 つのビュー、2 つのレイアウト、または 1 つのビューと 1 つのレイアウトにすることができます。ビュー フリッパーは、定義したこれら 2 つのビュー間を切り替えます。

2. XML でこれだけ作成したら、次に/res/anim、次の種類の開始遷移と終了遷移の4 つのアニメーション ルールを作成します。

を。残していった

b. レフトアウト

c. 右イン

d. ライトアウト

3. 1 と 2 の後に、コードに Touch または Gesture リスナーを追加して、Touch and Listen イベントをリッスンします。これらのリスナー内で、vf.setInAnimation()またはvf.setOutAnimation()を使用してアニメーションを開始しvfます。 は ViewFlipper インスタンスです。

ここで完全なコードを見つけることができます:

1. フリッパーのチュートリアル 1 を見る

2. フリッパーのチュートリアル 2 を見る

更新: View Flipper を ListView で動作させるには、いくつかの調整が必要です。同じ問題がマイナーな編集で解決された this other SO question を見つけました。ここでチェックしてください

于 2013-01-09T15:22:45.710 に答える
1

切り替えたいビューが 2 つしかない場合は、この方法で十分です。ただし、ビューページャーを使用してこれを実装できます。このようなアプローチは、一度にすべてをレンダリングしてメモリを無駄にしないように、複数のビューがある場合に特に役立ちます。ViewPager は、いつビューを作成および破棄するかを管理します。

  1. レイアウトで定義

    <android.support.v4.view.ViewPager
     android:id="@+id/viewPager"
     android:layout_width="match_parent"
     android:layout_height="match_parent" />
    
  2. アダプターを作成する

    class MyPagerAdapter extends PagerAdapter {
    
        public int getCount() {
            return 2;
        }
    
        public Object instantiateItem(View collection, int position) {
            LayoutInflater inflater = (LayoutInflater) collection.getContext().getSystemService(
                    Context.LAYOUT_INFLATER_SERVICE);
    
            // Inflate the correct view based on position
            View view = inflater.inflate(R.layout.yourLayoutHere, null);
    
            // ... Setup the view
    
            ((ViewPager) collection).addView(view, 0);
            return view;
        }
    
        @Override
        public void destroyItem(View arg0, int arg1, Object arg2) {
            ((ViewPager) arg0).removeView((View) arg2);
        }
    
        @Override
        public boolean isViewFromObject(View arg0, Object arg1) {
            return arg0 == ((View) arg1);
        }
    
        @Override
        public Parcelable saveState() {
            return null;
        }
    }
    
  3. アダプターをセットする

    ViewPager viewPager = findViewById(R.id.viewPager);
    viewPager.setAdapter(new MyPagerAdapter());
    

ボタンをクリックすると、ビューページャーの現在のアイテムを設定できます。

    viewPager.setCurrentItem(position);
于 2013-01-09T15:39:00.987 に答える