我如何压缩我的XML和Java代码,使我的应用程序运行更顺畅

时间:2016-02-16 13:00:24

标签: java android xml

我制作了一个适用于我的Facebook群组的应用。 XML使用了很多导航抽屉WebViewListView,而Java使用了很多适配器来运行列表视图。我想知道的是有一种方法来缩小我的代码以使应用程序运行得更好。我已经添加了一段XML和java供您查看。非常感谢任何帮助。

这是为每个数组适配器重复的一些java代码,我有一些你可以看到的。

 ListView CastingAppsDlNav,FireStickDlNav,RootingToolsDlNav,ModdingToolsDlNav,LauncherDlNav,FlimnTvDlNav,ShowBoxDlNav,
            KodiDlNav,LiveTvDlNav,MediaPlayerDlNav,MxPlayerNav,CodecNav,MusicAppNav,MusicDlAppsNav,AnimeNav,TvGuideDlsNav;

    ArrayAdapter<String> CastingAdapter,FireStickAdapter,RootingToolAdapter,ModdingToolsAdapter,LauncherAdapter,FilmnTvappAdapter,
            ShowBoxAdapter,KodiDlAdapter,LiveTvAdapter,MediaPlayerAdapter, MxPlayerAdapter, CodecAdapter, MusicAppsAdapter, MusicDlAppsAdapter,
    AnimeAdapter,TvGuidesAdapter;



    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
        setContentView(R.layout.activity_downloads);

        DownloadDrawer = (DrawerLayout) findViewById(R.id.DownloadDrawer);
        SvDownloads = (ScrollView) findViewById(R.id.SvDownloads);
        SvDownloads.setScrollbarFadingEnabled(false);

        // Tv Guide Array setup
        TvGuideDlsNav = (ListView) findViewById(R.id.TvGuideDlsNav);
        TvGuideDlsNav.setScrollbarFadingEnabled(false);

        String[] TvGuideArray = {"Sky+ Tv Guide", "TvGuide.co.uk","Tv Shows Favs","Tv ShowTimes","HomeScreen"};
        TvGuidesAdapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,TvGuideArray);
        TvGuideDlsNav.setAdapter(TvGuidesAdapter);
        TvGuideDlsNav.setOnItemClickListener(new AdapterView.OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                switch (position){
                    case 0:
                        //Sky Plus
                        Intent iSkyplusH20 = new Intent(Intent.ACTION_VIEW, Uri.parse(SkyplusplayDl));
                        startActivity(iSkyplusH20);
                        break;

                    case 1:
                        //Tvguide.co.uk
                        Intent iTvguidecouk = new Intent(Intent.ACTION_VIEW, Uri.parse(TvGuideUkPlayDl));
                        startActivity(iTvguidecouk);
                        break;

                    case 2:
                        //Tv Shows favs
                        Intent iTvshowsFavs = new Intent(Intent.ACTION_VIEW, Uri.parse(TvshowsFavPlayDl));
                        startActivity(iTvshowsFavs);

                        break;

                    case 3:
                        //Tv Showtimes
                        Intent iTvShowtimes = new Intent(Intent.ACTION_VIEW, Uri.parse(TVShowtimePlayDl));
                        startActivity(iTvShowtimes);

                        break;

                    case 4:
                        DownloadDrawer.closeDrawer(TvGuideDlsNav);

                        break;

                }
            }
        });

接下来是我的XML,这是我想要压缩的主要原因。

<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.harrops.h20droidapp.downloads"
    android:background="@drawable/splashbkground"
    android:id="@+id/DownloadDrawer">


    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true">

        <ImageView
            android:contentDescription="@string/desc"
            android:background="@drawable/h20logo"
            android:layout_width="fill_parent"
            android:layout_height="80sp"
            android:id="@+id/imageView12"
            android:layout_alignParentTop="true"
            android:layout_centerHorizontal="true"
            android:layout_margin="10dp" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textAppearance="?android:attr/textAppearanceSmall"
            android:text="H20 Downloads"
            android:id="@+id/textView12"
            android:layout_below="@+id/imageView12"
            android:layout_centerHorizontal="true"
            android:layout_marginTop="40sp"
            android:textColor="#ffffff" />

        <ScrollView
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:id="@+id/SvDownloads"
            android:layout_below="@+id/textView12"
            android:layout_centerHorizontal="true"
            android:layout_marginBottom="10dp">

            <LinearLayout
                android:orientation="vertical"
                android:layout_width="match_parent"
                android:layout_height="wrap_content">

        <Button
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="@string/CastingDl"
            android:id="@+id/bCastingAppsDl"
            android:layout_below="@+id/textView12"
            android:layout_centerHorizontal="true"
            android:layout_marginTop="10sp"
            android:textSize="20sp"
            android:background="#4b48ac"
            android:layout_marginLeft="10dp"
            android:layout_marginRight="10dp" />

        <Button
            style="?android:attr/buttonStyleSmall"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="@string/FireStickDl"
            android:id="@+id/bFireStickDl"
            android:layout_below="@+id/bCastingAppsDl"
            android:layout_centerHorizontal="true"
            android:textSize="20sp"
            android:background="#4b48ac"
            android:layout_marginTop="10sp"
            android:layout_marginLeft="10dp"
            android:layout_marginRight="10dp" />

        <Button
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="@string/RootingDl"
            android:id="@+id/bRootingToolsDl"
            android:layout_below="@+id/bFireStickDl"
            android:layout_centerHorizontal="true"
            android:textSize="20dp"
            android:background="#4b48ac"
            android:layout_marginTop="10sp"
            android:layout_marginLeft="10dp"
            android:layout_marginRight="10dp" />

        <Button
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="@string/ModdingDl"
            android:id="@+id/bModdingToolsDl"
            android:layout_below="@+id/bRootingToolsDl"
            android:layout_centerHorizontal="true"
            android:textSize="20dp"
            android:background="#4b48ac"
            android:layout_marginTop="10sp"
            android:layout_marginLeft="10dp"
            android:layout_marginRight="10dp" />

        <Button
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="@string/LauncherDl"
            android:id="@+id/bLauncherAppDl"
            android:layout_below="@+id/bRootingToolsDl"
            android:layout_centerHorizontal="true"
            android:textSize="20sp"
            android:background="#4b48ac"
            android:layout_marginTop="10sp"
            android:layout_marginLeft="10dp"
            android:layout_marginRight="10dp" />

        <Button
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="@string/FilmnTvDl"
            android:id="@+id/bFilmnTvDl"
            android:layout_below="@+id/bLauncherAppDl"
            android:layout_centerHorizontal="true"
            android:textSize="20sp"
            android:background="#4b48ac"
            android:layout_marginTop="10sp"
            android:layout_marginLeft="10dp"
            android:layout_marginRight="10dp" />

        <Button
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="@string/LiveTvDl"
            android:id="@+id/bLiveTvDl"
            android:layout_below="@+id/bFilmnTvDl"
            android:layout_centerHorizontal="true"
            android:textSize="20sp"
            android:background="#4b48ac"
            android:layout_marginTop="10sp"
            android:layout_marginLeft="10dp"
            android:layout_marginRight="10dp" />

        <Button
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="@string/MediaplayerDl"
            android:id="@+id/bMediaPlayerDl"
            android:layout_below="@+id/bLiveTvDl"
            android:layout_centerHorizontal="true"
            android:textSize="20sp"
            android:background="#4b48ac"
            android:layout_marginTop="10sp"
            android:layout_marginLeft="10dp"
            android:layout_marginRight="10dp" />

        <Button
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="Anime Apps"
            android:id="@+id/bAnimeDl"
            android:layout_below="@+id/bMediaPlayerDl"
            android:layout_centerHorizontal="true"
            android:textSize="20sp"
            android:background="#4b48ac"
            android:layout_marginTop="10sp"
            android:layout_marginLeft="10dp"
            android:layout_marginRight="10dp" />

                <Button
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content"
                    android:text="@string/MusicAppsDl"
                    android:id="@+id/bMusicApps"
                    android:layout_below="@+id/bAnimeDl"
                    android:layout_centerHorizontal="true"
                    android:textSize="20sp"
                    android:background="#4b48ac"
                    android:layout_marginTop="10sp"
                    android:layout_marginLeft="10dp"
                    android:layout_marginRight="10dp" />


                <Button
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content"
                    android:text="Tv Guides"
                    android:id="@+id/bTvGuideDl"
                    android:layout_below="@+id/bMusicApps"
                    android:layout_centerHorizontal="true"
                    android:textSize="20sp"
                    android:background="#4b48ac"
                    android:layout_marginTop="10sp"
                    android:layout_marginLeft="10dp"
                    android:layout_marginRight="10dp" />

                <Button
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content"
                    android:text="@string/homescreenDl"
                    android:id="@+id/bHomescreenDl"
                    android:layout_below="@+id/bMusicApps"
                    android:layout_centerHorizontal="true"
                    android:textSize="20sp"
                    android:background="#4b48ac"
                    android:layout_marginTop="10sp"
                    android:layout_marginLeft="10dp"
                    android:layout_marginRight="10dp" />


            </LinearLayout>
        </ScrollView>

    </RelativeLayout>

    <ListView
        android:layout_width="200sp"
        android:layout_height="fill_parent"
        android:id="@+id/CastingAppsDlNav"
        android:background="#4b48ac"
        android:layout_gravity="start"
        >

    </ListView>

    <ListView
        android:layout_width="200sp"
        android:layout_height="fill_parent"
        android:id="@+id/FireStickDlNav"
        android:background="#4b48ac"
        android:layout_gravity="start"
        >

    </ListView>

    <ListView
        android:layout_width="200sp"
        android:layout_height="fill_parent"
        android:id="@+id/RootingToolsDlNav"
        android:background="#4b48ac"
        android:layout_gravity="start"
        >

    </ListView>

    <ListView
        android:layout_width="200sp"
        android:layout_height="fill_parent"
        android:id="@+id/ModdingToolsDlNav"
        android:background="#4b48ac"
        android:layout_gravity="start"
        >

    </ListView>

    <ListView
        android:layout_width="200sp"
        android:layout_height="fill_parent"
        android:id="@+id/LauncherDlNav"
        android:background="#4b48ac"
        android:layout_gravity="start"
        >

    </ListView>

    <ListView
        android:layout_width="200sp"
        android:layout_height="fill_parent"
        android:id="@+id/FlimnTvDlNav"
        android:background="#4b48ac"
        android:layout_gravity="start"
        >

    </ListView>

    <ListView
        android:layout_width="200sp"
        android:layout_height="fill_parent"
        android:id="@+id/LiveTvDlNav"
        android:background="#4b48ac"
        android:layout_gravity="start"
        >

    </ListView>

    <ListView
        android:layout_width="200sp"
        android:layout_height="fill_parent"
        android:id="@+id/MediaPlayerDlNav"
        android:background="#4b48ac"
        android:layout_gravity="start"
        >

    </ListView>

    <ListView
        android:layout_width="200sp"
        android:layout_height="fill_parent"
        android:id="@+id/MusicAppNav"
        android:background="#4b48ac"
        android:layout_gravity="start"
        >

    </ListView>

    <ListView
        android:layout_width="200sp"
        android:layout_height="fill_parent"
        android:id="@+id/MemeAppDlNav"
        android:background="#4b48ac"
        android:layout_gravity="start"
        >

    </ListView>

    <ListView
        android:layout_width="200sp"
        android:layout_height="fill_parent"
        android:id="@+id/ShowBoxDlNav"
        android:background="#4b48ac"
        android:layout_gravity="end"
        >

    </ListView>

    <ListView
        android:layout_width="200sp"
        android:layout_height="fill_parent"
        android:id="@+id/KodiDlNav"
        android:background="#4b48ac"
        android:layout_gravity="end"
        >

    </ListView>

    <ListView
        android:layout_width="200sp"
        android:layout_height="fill_parent"
        android:id="@+id/MxPlayerNav"
        android:background="#4b48ac"
        android:layout_gravity="end"
        >

    </ListView>

    <ListView
        android:layout_width="200sp"
        android:layout_height="fill_parent"
        android:id="@+id/MusicDlAppsNav"
        android:background="#4b48ac"
        android:layout_gravity="end"
        >

    </ListView>

    <ListView
        android:layout_width="200sp"
        android:layout_height="fill_parent"
        android:id="@+id/CodecNav"
        android:background="#4b48ac"
        android:layout_gravity="start"
        >

    </ListView>

    <ListView
        android:layout_width="200sp"
        android:layout_height="fill_parent"
        android:id="@+id/AnimeNav"
        android:background="#4b48ac"
        android:layout_gravity="start"
        >
        </ListView>

    <ListView
        android:layout_width="200sp"
        android:layout_height="fill_parent"
        android:id="@+id/TvGuideDlsNav"
        android:background="#4b48ac"
        android:layout_gravity="start"
        >

    </ListView>
</android.support.v4.widget.DrawerLayout>

1 个答案:

答案 0 :(得分:1)

一个选项是使用Fragments来包含单独的ListView。

Here是片段的样子。

假设其他ListViews具有与TvGuideDlsNav类似的功能,这样的事情可能会解决同时处理所有视图的活动:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent">
<fragment android:name="com.yourpackage.AListOfListViews"
        android:id="@+id/list"
        android:layout_weight="1"
        android:layout_width="0dp"
        android:layout_height="match_parent" >

<!-- THE LIST TITLES HERE -->

</fragment>

<fragment android:name="com.yourpackage.HereIsAListViewOrActivity"
        android:id="@+id/viewer"
        android:layout_weight="2"
        android:layout_width="0dp"
        android:layout_height="match_parent" >

<!-- LISTVIEW OR ACTIVITY HERE -->
</fragment>
</LinearLayout>

您可以在第一个片段中拥有一组ListView标题。当用户选择一个项目,即&#34; TV Guide&#34;时,第二个片段填充并显示相应的ListView。当用户选择第二个片段上的项目时,您编写的相同代码可以处理OnItemClick。

您还可以通过将ListView片段替换为活动来重用第二个片段。

有关如何在Android中实现片段的详细信息,请参阅Android文档。

修改

要实现片段,您需要有多个扩展片段类的类,每个类都包含一个包含ListView的布局。

Android documentation中所述,您的OnItemClick应包含一个片段管理器来更改片段:

  

例如,以下是如何将一个片段替换为另一个片段:

// Create new fragment and transaction
Fragment newFragment = new ExampleFragment();
FragmentTransaction transaction = getFragmentManager().beginTransaction();

// Replace whatever is in the fragment_container view with this fragment
transaction.replace(R.id.fragment_container, newFragment);

// Commit the transaction
transaction.commit();

在这种情况下,R.id.fragment_container将是R.id.viewer,它包含第二个片段。此外,newFragment将是处理所选ListView的片段类。