画像スライドを追加したい。ただし、右から左にスライドさせることはできません。 (アラビア語やヘブライ語などの言語の場合)
Stackoverflowのほぼすべての返信を確認しましたが、明確な解決策が見つかりません。
ここにコード全体を書きます。
私をはっきりと書いてください、私は専門家ではありません
主な活動;
package com.manishkpr.viewpagerimagegallery;
import Android.app.Activity;
import Android.os.Bundle;
import Android.support.v4.view.ViewPager;
public class MainActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ViewPager viewPager = (ViewPager) findViewById(R.id.view_pager);
ImageAdapter adapter = new ImageAdapter(this);
viewPager.setAdapter(adapter);
}
}
これがImageAdapter.Javaです。
package com.manishkpr.viewpagerimagegallery;
import Android.content.Context;
import Android.support.v4.view.PagerAdapter;
import Android.support.v4.view.ViewPager;
import Android.view.View;
import Android.view.ViewGroup;
import Android.widget.ImageView;
public class ImageAdapter extends PagerAdapter {
Context context;
private int[] GalImages = new int[] {
R.drawable.one,
R.drawable.two,
R.drawable.three
};
ImageAdapter(Context context){
this.context=context;
}
@Override
public int getCount() {
return GalImages.length;
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view == ((ImageView) object);
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
ImageView imageView = new ImageView(context);
int padding = context.getResources().getDimensionPixelSize(R.dimen.padding_medium);
imageView.setPadding(padding, padding, padding, padding);
imageView.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
imageView.setImageResource(GalImages[position]);
((ViewPager) container).addView(imageView, 0);
return imageView;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
((ViewPager) container).removeView((ImageView) object);
}
}
これがレイアウトファイルです。
<RelativeLayout 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=".MainActivity" >
<Android.support.v4.view.ViewPager
Android:id="@+id/view_pager"
Android:layout_width="match_parent"
Android:layout_height="match_parent" />
</RelativeLayout>
レイアウトファイルを作成するpager_item.xml
:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:orientation="vertical" Android:layout_width="match_parent"
Android:layout_height="match_parent">
<ImageView
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:id="@+id/imageView" />
</LinearLayout>
PagerAdapterを次のように変更します。
public class ImageAdapter extends PagerAdapter {
Context context;
private int[] GalImages = new int[] {
R.drawable.one,
R.drawable.two,
R.drawable.three
};
LayoutInflater mLayoutInflater;
ImageAdapter(Context context){
this.context=context;
mLayoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
@Override
public int getCount() {
return GalImages.length;
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view == ((LinearLayout) object);
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
View itemView = mLayoutInflater.inflate(R.layout.pager_item, container, false);
ImageView imageView = (ImageView) itemView.findViewById(R.id.imageView);
imageView.setImageResource(GalImages[position]);
container.addView(itemView);
return itemView;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView((LinearLayout)object);
}
}
編集1:
トリック:
public class MainActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ViewPager viewPager = (ViewPager) findViewById(R.id.view_pager);
ImageAdapter adapter = new ImageAdapter(this);
viewPager.setAdapter(adapter);
viewPager.setCurrentItem(adapter.getCount()-1);
}
これがお役に立てば幸いです:)
ViewPagerはRTLをサポートしていません。
アラビア語やその他の言語の場合は、右から左にスワイプするためのカスタムViewPagerを作成する必要があります。
コードを作成したくない場合は、利用可能なライブラリがたくさんあり、そのうちの1つを使用できます。
ViewPagerを使用する代わりに、 SwipeDeck を使用することをお勧めします。NiranjPatelが言ったように、ViewPagerは右から左をサポートしていません。
<?xml version="1.0" encoding="utf-8"?>
<com.daprlabs.cardstack.SwipeFrameLayout
xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:swipedeck="http://schemas.Android.com/apk/res-auto"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:orientation="vertical">
<com.daprlabs.cardstack.SwipeDeck
Android:id="@+id/swipe_deck"
Android:layout_width="match_parent"
Android:layout_height="480dp"
Android:padding="20dp"
swipedeck:card_spacing="10dp"
swipedeck:max_visible="3"
swipedeck:render_above="true"
swipedeck:rotation_degrees="15" />
<Button
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_gravity="bottom"
Android:text="Button" />
</com.daprlabs.cardstack.SwipeFrameLayout>
単純な解決策ですが、専門家ではありません
これをVeiwPagerのxmlで記述します
Android:rotationY="180"
そしてveiw_itemにも
Android:rotationY="180".