需要一些帮助设计在Android中的布局

时间:2015-09-24 06:36:37

标签: android android-layout android-fragments android-design-library

我有ListView使用AsyncTask从服务器获取数据。之后onItemClick开始新Activity,该ListView应显示ViewPager中所点击项目的更详细信息。很简单。但问题是单个页面应该像9GAG android app一样工作(即带有ViewPager的可滑动片段)。详细信息更多。您对该页面的设计布局有何建议?目前我在该单页上使用public class IndividualPage extends ActionBarActivity{ ArrayList<Item> arrayOfList; ViewPager pager; CountryPageAdapter pageAdapter; private ProgressBar mProgress; @Override public void onCreate (Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.secondpage); mProgress = (ProgressBar) findViewById(R.id.linear_progress_bar); new FilteredResult().execute(); pager = (ViewPager)findViewById(R.id.viewpager); } private List<Fragment> getFragments() { List<Fragment> frags = new ArrayList<Fragment>(); System.out.println("fragments main ayya hai"); cats=arrayOfList; for(int i = 0;i<cats.size();i++ ) { System.out.println("number : "+i+"::"+cats.get(i).getSector()); frags.add(prepareFragment(cats.get(i).getImage(),cats.get(i).getName(),cats.get(i).getLocation(),cats.get(i).getSector(),cats.get(i).getStatus(),cats.get(i).getFounded(),cats.get(i).getFundRaising())); } return frags; } Fragment prepareFragment(String image,String name,String location,String Expertise,String sector,int founded,String fund) { CountryFragment cf = new CountryFragment(); Bundle args = new Bundle(); args.putString(CountryFragment.STARTUP_IMAGE, image); args.putString(CountryFragment.STARTUP_NAME, name); args.putString(CountryFragment.STARTUP_LOCATION, location); args.putString(CountryFragment.STARTUP_EXP, Expertise); args.putString(CountryFragment.STARTUP_SEC, sector); args.putInt(CountryFragment.STARTUP_FOUNDED, founded); args.putString(CountryFragment.STARTUP_FUND, fund); cf.setArguments(args); return cf; } [![public class FilteredResult extends AsyncTask<String, Void, String> { //onpreexcute nothing doing great in this //onbackground @Override protected void onPostExecute(String result) { List<Fragment> fragments = getFragments(); pageAdapter = new CountryPageAdapter(getSupportFragmentManager(), fragments); pager.setAdapter(pageAdapter); } }] 并设计片段以获得所需的内容。

First Screen Second Detailed Info Screen which needs to designed Ideal thing to happen is like this

代码

 <item name="android:listSelector">?attr/listChoiceBackgroundIndicator</item>

2 个答案:

答案 0 :(得分:1)

我个人更喜欢ViewPagersScrollViews,因为他们没有将所有片段/视图保留在内存中。

此外,每个单独的项目都独立于其他项目。例如,如果您希望能够为每个项目实现垂直滚动,则无法使用HorizontalScrollView执行此操作,因为所有视图都将一起滚动。

答案 1 :(得分:1)

即使我拥有与此类似的设计

班级档案

import java.util.ArrayList;
import org.json.JSONArray;
import org.json.JSONObject;

import android.graphics.Color;
import android.os.Bundle;
import android.support.v4.view.ViewPager;
import android.support.v7.app.ActionBar;
import android.util.Log;
import android.widget.LinearLayout;

import com.daimajia.slider.library.SliderLayout;
import com.daimajia.slider.library.Animations.DescriptionAnimation;
import com.daimajia.slider.library.SliderTypes.BaseSliderView;
import com.daimajia.slider.library.SliderTypes.TextSliderView;


public class TurfDetailsActivity extends BaseActivity{

    private SliderLayout mDemoSlider;
    ViewPager pager;
    private ViewPager viewPager;
    private TurfDetailsViewPagerAdapter mAdapter;
    private ActionBar mActionBar;
    LinearLayout SliderImg;
    private PagerSlidingTabStrip tabs;
    String Venue;
    public static Bundle b;
    public static ArrayList<ReviewModel> reviewList;
    public static ArrayList<TimingModel> timigList;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_turf_details_1);
        mDemoSlider = (SliderLayout)findViewById(R.id.turf_details_slider);
        reviewList = new ArrayList<ReviewModel>();
        timigList = new ArrayList<TimingModel>();
        actionBarIdForAll("Turf Details");

        String data = getIntent().getStringExtra("data");
        Bundle object = getDataObject(data);
        imageSlider(data);

        tabs = (PagerSlidingTabStrip)findViewById(R.id.tabs);
        viewPager = (ViewPager) findViewById(R.id.pager);
        mActionBar = getSupportActionBar();
        mAdapter = new TurfDetailsViewPagerAdapter(getSupportFragmentManager(), object);

        viewPager.setAdapter(mAdapter);
        mActionBar.setDisplayHomeAsUpEnabled(true);

        viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {

            @Override
            public void onPageSelected(int position) {
                mActionBar.setSelectedNavigationItem(position);
            }
            @Override
            public void onPageScrolled(int arg0, float arg1, int arg2) {
            }

            @Override
            public void onPageScrollStateChanged(int arg0) {
            }
        });
        tabs.setViewPager(viewPager);
        tabs.setIndicatorColor(Color.parseColor("#ffffff"));
        tabs.setTextColor(Color.parseColor("#ffffff"));
    }

    @Override
    protected void onSaveInstanceState(Bundle outState) {
        // TODO Auto-generated method stub
        outState = b;
    }

    @Override
    protected void onRestoreInstanceState(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        b = savedInstanceState;
    }

    private Bundle getDataObject(String data) {
        // TODO Auto-generated method stub
        ReviewModel mReviewModel;
        TimingModel mTimingModel;
        b = new Bundle();
        try {
            JSONObject obj = new JSONObject(data).getJSONArray("venue").getJSONObject(0);
            b.putString("vid", obj.getString("vid"));
            b.putString("venueName", obj.getString("venue_name"));
            Venue = obj.getString("venue_name");
            b.putString("location", obj.getString("location"));
            b.putString("address", obj.getString("address"));
            b.putString("contact", obj.getString("booking_contact"));
            b.putString("turfSize", obj.getString("turf_size"));
            b.putString("formats", obj.getString("preferred_format"));
            b.putString("floodlights", obj.getString("floodlights"));
            b.putString("ball", obj.getString("ball"));
            b.putString("shoeType", obj.getString("shoe_type"));
            b.putString("parking", obj.getString("parking"));
            b.putString("refreshments", obj.getString("refreshments"));
            b.putString("washrooms", obj.getString("washrooms"));
            b.putString("bibs", obj.getString("bibs"));
            b.putString("otherGames", obj.getString("other_games_played"));
            b.putString("coaching", obj.getString("coaching"));
            b.putString("stands", obj.getString("stands"));
            b.putString("website", obj.getString("website"));
            b.putString("latitude", obj.getString("latitude"));
            b.putString("longitude", obj.getString("longitude"));
            b.putString("cost", obj.getString("cost"));
            b.putString("rating", obj.getString("rating"));
            b.putString("createdDate", obj.getString("created_date"));
            b.putString("updatedDate", obj.getString("updated_date"));
            JSONArray array = new JSONObject(data).getJSONArray("reviews");
            if(array.length()!=0){
                for(int i=0;i<array.length();i++){
                    JSONObject obj11 = array.getJSONObject(i);
                    String vid = obj11.getString("vid");
                    String uid = obj11.getString("uid");
                    String email = obj11.getString("email");
                    String created_date = obj11.getString("created_date");
                    String review = obj11.getString("review");
                    String review_user_image = obj11.getString("image");
                    String review_user_name = obj11.getString("name");
                    b.putString("review", review);
                    b.putString("review_user_image", review_user_image);
                    b.putString("review_user_name", review_user_name);

                    mReviewModel = new ReviewModel(vid, uid, review, review_user_image, review_user_name, email, created_date);
                    reviewList.add(mReviewModel);
                }
            }else {
                b.putString("Review_count", "0");
            }

            JSONArray arrayCost = new JSONObject(data).getJSONArray("cost");
            for(int i=0;i<arrayCost.length();i++){
                JSONObject obj12 = arrayCost.getJSONObject(i);
                String vid = obj12.getString("vid");
                String tid = obj12.getString("tid");
                String timing = obj12.getString("timing");
                String created_date = obj12.getString("created_date");
                String weekdays = obj12.getString("weekdays");
                String weekends = obj12.getString("weekends");
                b.putString("timing", timing);
                b.putString("weekdays", weekdays);
                b.putString("weekends", weekends);
                Log.e("timing", timing);
                Log.e("weekdays", weekdays);
                Log.e("weekends", weekends);

                mTimingModel = new TimingModel(vid, tid, timing, weekdays, weekends);
                timigList.add(mTimingModel);
            }
        } catch (Exception e) {
            // TODO: handle exception
        }
        return b;
    }

    public void imageSlider(String data){

        try {
            JSONArray array = new JSONObject(data).getJSONArray("media");

            if(array.length()!=0){
                for(int i=0;i<array.length();i++){
                    JSONObject obj = array.getJSONObject(i);
                    String url = obj.getString("path");
                    TextSliderView textSliderView = new TextSliderView(this);
                    // initialize a SliderLayout
                    textSliderView.description(Venue).image(url).setScaleType(BaseSliderView.ScaleType.Fit);
                    //add your extra information
                    textSliderView.getBundle().putString("extra","Where is my turf");
                    mDemoSlider.addSlider(textSliderView);
                }
            }else{
                TextSliderView textSliderView = new TextSliderView(this);
                // initialize a SliderLayout
                textSliderView  .description("Where is my turf").image(R.drawable.ic_launcher).setScaleType(BaseSliderView.ScaleType.Fit);
                //add your extra information
                textSliderView.getBundle()  .putString("extra","Where is my turf");

                mDemoSlider.addSlider(textSliderView);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        mDemoSlider.setPresetTransformer(SliderLayout.Transformer.Accordion);
        mDemoSlider.setPresetIndicator(SliderLayout.PresetIndicators.Right_Bottom);
        mDemoSlider.setCustomAnimation(new DescriptionAnimation());
        mDemoSlider.setDuration(3000);
    }
}

ADAPTER

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;



public class TurfDetailsViewPagerAdapter extends FragmentPagerAdapter {

    private Bundle data;

    public TurfDetailsViewPagerAdapter(FragmentManager fm, Bundle data) {
        super(fm);
        this.data = data;
    }

    @Override
    public CharSequence getPageTitle(int position) {
        // TODO Auto-generated method stub
        if (position == 0)
        {
            return "ABOUT";
        }
        if (position == 1)
        {
            return "FEATURES";
        }
        if (position == 2)
        {
            return "COST";
        }
        if (position == 3)
        {
            return "REVIEWS";
        } 
        return null;
    }

    @Override
    public Fragment getItem(int index) {

        switch (index) {
        case 0:
            return new AboutFragment(data);
        case 1:
            return new FeaturesFragment();
        case 2:
            return new CostFragment();
        case 3:
            return new ReviewsFragment();
        }

        return null;
    }

    @Override
    public int getCount() {
        // get item count - equal to number of tabs
        return 4;
    }

}

XML布局

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:custom="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:weightSum="1" >

    <LinearLayout
        android:id="@+id/image_forward"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_marginLeft="2dp"
        android:layout_marginRight="2dp"
        android:layout_weight=".35" >

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            tools:context="com.daimajia.slider.demo.ImageSliderActivity" >

            <com.daimajia.slider.library.SliderLayout
                android:id="@+id/turf_details_slider"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                custom:auto_cycle="true"
                custom:indicator_visibility="visible"
                custom:pager_animation="Accordion"
                custom:pager_animation_span="1100" />
        </RelativeLayout>
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_marginLeft="2dp"
        android:layout_marginRight="2dp"
        android:layout_marginTop="2dp"
        android:layout_weight=".65"
        android:orientation="vertical" >

        <com.PACKAGE.customviews.PagerSlidingTabStrip
            android:id="@+id/tabs"
            android:layout_width="match_parent"
            android:layout_height="48dip"
            android:background="#5e5b5b"
            android:paddingLeft="3dp" />

        <android.support.v4.view.ViewPager
            android:id="@+id/pager"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" >
        </android.support.v4.view.ViewPager>
    </LinearLayout>

</LinearLayout>

结果图片

enter image description here

如果您需要任何形式的帮助,请免费询问..... Happeee ...编程......