1

私は Android 開発に精通していますが、しばらくコーディングしていませんでした。私は Fragments の操作に慣れていないので、簡単なレイアウトのアドバイスが欲しかっただけです。

さまざまなビュー間でスワイプしたいアプリケーションを作成していますが、アクティビティの下部に一定のオーバーレイもあります。3 つの異なるビューがありますが、タブ (TabHost など) は必要ありません。現在のビューの名前を上部に表示する定数オーバーレイと、ユーザーの名前とボタンを持つ定数オーバーレイを下部に表示したいだけです。3 つのビューは、解析された JSON データになります。

これを行う方法の詳細な説明は必要ありませんが、推奨事項は素晴らしいでしょう! 私はあまりにも長い間 Android ゲームから離れていました。

ここに私が作成しようとしているものの簡単な例の写真があります: 例

ご協力いただきありがとうございます!

4

4 に答える 4

1

簡単にするために、インターネットで入手できるいくつかのコードを追加します。

public class AwesomePagerActivity extends Activity {

private ViewPager awesomePager;
private static int NUM_AWESOME_VIEWS = 20;
private Context cxt;
private AwesomePagerAdapter awesomeAdapter;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_awesome_pager);
    cxt = this;

    awesomeAdapter = new AwesomePagerAdapter();
    awesomePager = (ViewPager) findViewById(R.id.awesomepager);
    awesomePager.setAdapter(awesomeAdapter);
}

private class AwesomePagerAdapter extends PagerAdapter {

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


    @Override
    public Object instantiateItem(ViewGroup collection, int position) {
        TextView text = new TextView(cxt);
        text.setTextSize(50);
                    text.setText("Text"+position);
        collection.addView(text, 0);

        return text;
    }


    @Override
    public void destroyItem(ViewGroup collection, int position, Object view) {
        collection.removeView((TextView) view);
    }


    @Override
    public boolean isViewFromObject(View view, Object object) {
        return (view == object);
    }

    @Override
    public void finishUpdate(ViewGroup arg0) {
    }

    @Override
    public void restoreState(Parcelable arg0, ClassLoader arg1) {
    }

    @Override
    public Parcelable saveState() {
        return null;
    }

    @Override
    public void startUpdate(ViewGroup arg0) {
    }
            @Override
    public int getItemPosition(Object object) {
        // TODO Auto-generated method stub
        return POSITION_NONE;
    }
           }
         }

新しい TextView を作成する代わりに、画像を追加できます。ビューを変更したい xml に ViewPager を追加するだけです。フラグメントを作成する必要はありません。必要に応じて新しいビュー (Image、TextView など) を作成するだけです。

理解を深めるためにxmlも追加します。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<android.support.v4.view.ViewPager
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:id="@+id/awesomepager"/>
</LinearLayout>
于 2013-01-21T07:31:29.140 に答える
1

これを行う方法の詳細な説明は必要ありませんが、推奨事項は素晴らしいでしょう! 私はあまりにも長い間 Android ゲームから離れていました。

2 つのオーバーレイ ビューを に配置しますRelativeLayout。1 つは の上部に位置合わせされ、RelativeLayoutもう 1 つは の下部に位置合わせされRelativeLayoutます。json ベースのビューをスワイプするには、ViewPager. 2 つのオーバーレイ ビューを のコンテンツの上に配置するか、2 つのオーバーレイのコンテンツViewPager全体の上に配置するかはわかりません。目的に応じて、前の 2 つのビューの間に配置するか、単にを埋める(そしてそれらの下に配置する) かどうかを設定します。ViewPagerViewPagerRelativeLayoutRelativeLayout

于 2013-01-21T07:20:13.057 に答える
0

次のようにPagerAdapterを作成する必要があります。

public class SamplePagerAdapter extends PagerAdapter{

List<View> pages = null;

public SamplePagerAdapter(List<View> pages){
    this.pages = pages;
}

@Override
public Object instantiateItem(View collection, int position){
    View v = pages.get(position);
    ((ViewPager) collection).addView(v, 0);
    return v;
}

@Override
public void destroyItem(View collection, int position, Object view){
    ((ViewPager) collection).removeView((View) view);
}

@Override
public int getCount(){
    return pages.size();
}

@Override
public boolean isViewFromObject(View view, Object object){
    return view.equals(object);
}

@Override
public void finishUpdate(View arg0){
}

@Override
public void restoreState(Parcelable arg0, ClassLoader arg1){
}

@Override
public Parcelable saveState(){
    return null;
}

@Override
public void startUpdate(View arg0){
}

}

次に、fragmnetを作成し、このようなコードをonCreateViewに配置します

LayoutInflater inflater = LayoutInflater.from(this);
    List<View> pages = new ArrayList<View>();

    View page = inflater.inflate(R.layout.page, null);
    TextView textView = (TextView) page.findViewById(R.id.text_view);
    textView.setText("page1");
    pages.add(page);

    page = inflater.inflate(R.layout.page, null);
    textView = (TextView) page.findViewById(R.id.text_view);
    textView.setText("page2");
    pages.add(page);

    page = inflater.inflate(R.layout.page, null);
    textView = (TextView) page.findViewById(R.id.text_view);
    textView.setText("page 3");
    pages.add(page);

    SamplePagerAdapter pagerAdapter = new SamplePagerAdapter(pages);
    ViewPager viewPager = new ViewPager(this);
    viewPager.setAdapter(pagerAdapter);
    viewPager.setCurrentItem(1);     

    setContentView(viewPager);

また、フラグメントでViewChangeをリッスンするためのインターフェイスを作成し、インターフェイスを介して現在のページをメインアクティビティに渡します。それはすべての人々です:)

于 2013-01-21T07:24:43.373 に答える