2016-03-25 5 views
4

ViewPagerViewPageIndicatorを使用します。私はthis DotsPageIndicatorを見つけましたが、それはAndroidWearのみたいです。面白いことに、Android 6デバイスのホームページには、次の図のように全く同じことがあります(画像をクリックすると大きな画像が表示されます)。Androidモバイル用のデフォルトのDotsPageIndicator(摩耗していない)はありますか?

だから、私はただ単純に欠けているものがあり、それはすべてのデフォルトのAndroidのものと同じように簡単に実装することができますか?それとも、私はまだ外部ライブラリを使用する必要がありますか?後者が真実なら、どうすればいいでしょうか?

答えて

1

私はかなりの時間前にこの質問への答えを見つけたが、私はまだこの1つが開いていた忘れてしまったので、私は、私は当時から覚えていると、今それに答えることをしようとするつもりですしています。だから、それは完璧ではないかもしれないことに注意してください。しかし、私はできるだけ良いものにしようとします。


viewPagerIndicatorライブラリが必要です。あなたが追加する必要があります、

... 
dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    testCompile 'junit:junit:4.12' 
    compile "com.android.support:support-v13:24.1.1" 
    compile 'com.android.support:appcompat-v7:24.1.1' 
    compile 'com.android.support:support-v4:24.1.1' 
    compile 'com.android.support:design:24.1.1' 
    compile 'com.google.android.gms:play-services-appindexing:9.4.0' 
    compile 'com.viewpagerindicator:library:[email protected]' 
} 

次:私はこれを行う方法はdependenciesに行き、結果はこのようになるはずですcompile 'com.viewpagerindicator:library:[email protected]'

を追加し、あなたのbuild.gradle (Module: app)のGradleスクリプトを開くことであると信じてPageIndicator(あなたのサークルバージョンを選んだ)をXMLに追加してください。これは、これらのインジケータが必要なViewPagerと同じXMLファイルに存在する必要があります。

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:orientation="vertical" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_centerHorizontal="true"> 

    <com.example.tim.timapp.CustomStuff.Misc.CustomViewPager 
     android:id="@+id/pager" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:overScrollMode="never"/> 

    <!-- Note that I use a custom ViewPager for app-specific reasons. --> 
    <!-- It doesn't matter if you use a custom or default VP as far as I know. --> 

    <com.viewpagerindicator.CirclePageIndicator 
     android:id="@+id/circlePageIndicator" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     app:fillColor="@color/colorPrimary" 
     app:strokeColor="@color/lightGrey"/> 

</LinearLayout> 

その後、あなたはPageIndicatorを初期化する必要があり、そのViewPagerを設定します:私のファイルには、このようになります。これは、あなたが使用しているものであればonCreate....()メソッドで行われます。基本的なルールとして、この部分はビューを返す同じメソッドでなければなりません。私の場合はonCreateDialog()メソッドにあります。私はDialogの中にViewPagerがあるからです。

@Override 
public Dialog onCreateDialog(Bundle savedInstanceState) { 
    LayoutInflater inflater = getActivity().getLayoutInflater(); 

    // Inflate view 
    view = inflater.inflate(R.layout.fragment_viewpager, null); 

    // Initialize viewpager and set max amount of off screen pages 
    mPager = (ViewPager) view.findViewById(R.id.pager); 
    mPager.setOffscreenPageLimit(3); 

    // Initialize pageradapter and set adapter to viewpager 
    mPagerAdapter = new SettingsAdapter(inflater); 
    mPager.setAdapter(mPagerAdapter); 
    mPagerAdapter.notifyDataSetChanged(); 

    // Initialize circlePageIndicator and set viewpager for it 
    CirclePageIndicator circlePageIndicator = (CirclePageIndicator) view.findViewById(R.id.circlePageIndicator); 
    circlePageIndicator.setViewPager(mPager); 
} 

正しくリコールすれば、それはすべてでなければなりません。参考のため
は、あなたはここで、このViewPagerIndicatorのためにウェブサイトをチェックアウトすることができます:は私が覚えている限りでは、あなたは少なくとも(は、このウェブサイトから何かをダウンロードする必要はありません。
http://viewpagerindicator.com

に注意してください。 Android Studioを使用していない場合)。あなたがやった最初のステップは、VPIの準備を整えておくべきだったはずです。

これが役に立ちます。ご清聴をお願いします。繰り返しますが、これは正確に動作することを保証するものではありませんが、それはあなたを動かすはずです。

-1

プレイスには、このコードは、Javaクラスである:ここで

@Override 
protected void onCreate(Bundle savedBundle) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedBundle); 
    addDots();//setup dot layout 
    selectDot(0); //set initial dot position 
} 

protected void addDots() { 
     dots = new ArrayList<ImageView>(); 
     LinearLayout dotsLayout = (LinearLayout) findViewById(R.id.pager_dots); 

     for (int i = 0; i < NUM_OF_DOTS; i++) { 
      ImageView dot = new ImageView(this); 
      dot.setImageDrawable(getResources().getDrawable(
        R.drawable.ic_pager_dot_not_selected)); 

      LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
        LinearLayout.LayoutParams.WRAP_CONTENT, 
        LinearLayout.LayoutParams.WRAP_CONTENT); 
      params.setMargins(5, 0, 5, 0); 
      dotsLayout.addView(dot, params); 

      dots.add(dot); 
     } 
    } 

    public void selectDot(int idx) { 
     Resources res = getResources(); 
     for (int i = 0; i < NUM_PAGES; i++) { 
      int drawableId = (i == idx) ? (R.drawable.ic_pager_dot_selected) 
        : (R.drawable.ic_pager_dot_not_selected); 
      Drawable drawable = res.getDrawable(drawableId); 
      dots.get(i).setImageDrawable(drawable); 
     } 
    } 

はlayout.xmlここ

<LinearLayout 
     android:id="@+id/pager_dots" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_above="@+id/activity_wizard_footer" 
     android:layout_centerHorizontal="true" 
     android:layout_marginBottom="5dp" 
     android:gravity="center_horizontal" 
     android:orientation="horizontal" /> 

は、ドット画像です。 Not selected Selected

+0

XMLはどの要素を使用する必要がありますか?それはViewpagerの中にあるべきかどうか? – Timmiej93

+0

@ Timmiej93 Viewpagerレイアウトの外側で使用します。 – AKSiddique

+0

しかしそれはどんな要素ですか? XMLタグは閉じますが、XMLタグは開かないでください。 – Timmiej93

関連する問題