Androidが開発したのはView Pagerを使って、画像を左右にスライドさせて切り替えます。
Androidの中の写真の左右の切り替えは随所に見られます。今日も資料を調べてみて作ってみました。とても簡単な小さいDemoですが、問題も見つけました。話は多くなくて、コードを入れます。
3つのxmlファイルをViewer Pagerのスライドpageとして使用しました。レイアウトは同じです。次のようにその中の一つだけを示します。
ホームページのレイアウト:
以上は小编で绍介したAndroid开発のView Pagerを使って左右のスライド切り替えの効果を実现しました。皆さんに助けてほしいです。もし何か疑问があれば、メッセージをください。
3つのxmlファイルをViewer Pagerのスライドpageとして使用しました。レイアウトは同じです。次のようにその中の一つだけを示します。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
>
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="centerCrop"
android:src="@mipmap/view1"/>
</LinearLayout>
画像を表示する容器としてImageViewを使っただけです。ホームページのレイアウト:
<?xml version="1.0" encoding="UTF-8"?>
<RelativeLayout android:orientation="vertical"
android:layout_height="match_parent"
android:layout_width="match_parent"
xmlns:android="http://schemas.android.com/apk/res/android">
<!-- -->
<android.support.v4.view.ViewPager
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:id="@+id/viewPager"></android.support.v4.view.ViewPager>
<!-- -->
<LinearLayout
android:orientation="horizontal"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:id="@+id/viewGroup"
android:layout_alignParentBottom="true"
android:gravity="center_horizontal"
android:layout_marginBottom="40dp"></LinearLayout>
</RelativeLayout>
次はメイン関数のコードです。
package com.yztc.lx.homework;
import android.app.Activity;
import android.os.Bundle;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.LayoutInflater;
import android.view.ViewGroup.LayoutParams;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import java.util.ArrayList;
import java.util.List;
/**
* Created by Lx on 2016/8/6.
*/
public class Layout1Activity extends Activity {
private ViewPager viewPager;
private PagerAdapter adapter;
private List<View> viewPages = new ArrayList<>();
// LinearLayout
private ViewGroup group;
private ImageView imageView;
// ImageVIew ,
private ImageView[] imageViews;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.layout1);
initView();
initPageAdapter();
initPointer();
initEvent();
}
// ,
private void initEvent() {
viewPager.setAdapter(adapter);
viewPager.addOnPageChangeListener(new GuidePageChangeListener());
}
// ViewPager
private void initPageAdapter() {
/**
* page , LayoutInflater.inflate() , View
*/
LayoutInflater inflater = LayoutInflater.from(this);
View page1 = inflater.inflate(R.layout.page1, null);
View page2 = inflater.inflate(R.layout.page2, null);
View page3 = inflater.inflate(R.layout.page3, null);
//
viewPages.add(page1);
viewPages.add(page2);
viewPages.add(page3);
adapter = new PagerAdapter() {
//
@Override
public int getCount() {
return viewPages.size();
}
//
@Override
public boolean isViewFromObject(View view, Object object) {
return view == object;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView(viewPages.get(position));
}
// , PagerAdapter ViewPager
@Override
public Object instantiateItem(ViewGroup container, int position) {
View view = viewPages.get(position);
container.addView(view);
return view;
}
};
}
//
private void initView() {
viewPager = (ViewPager) findViewById(R.id.viewPager);
group = (ViewGroup) findViewById(R.id.viewGroup);
}
//
private void initPointer() {
// new
imageViews = new ImageView[viewPages.size()];
for (int i = 0; i < imageViews.length; i++) {
imageView = new ImageView(this);
//
imageView.setLayoutParams(new LayoutParams(25, 25));
// padding
imageView.setPadding(20, 0, 20, 0);
imageViews[i] = imageView;
// page
if (i == 0) {
//
imageViews[i].setBackgroundResource(R.mipmap.page_indicator_focused);
/**
* java ImageView
* BackgroundResource
* ImageResource
*/
} else {
imageViews[i].setBackgroundResource(R.mipmap.page_indicator_unfocused);
}
group.addView(imageViews[i]);
}
}
//ViewPager onPageChangeListener , ViewPager page
public class GuidePageChangeListener implements ViewPager.OnPageChangeListener {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
//
@Override
public void onPageSelected(int position) {
// page, ImageView
for (int i = 0; i < imageViews.length; i++) {
imageViews[position].setBackgroundResource(R.mipmap.page_indicator_focused);
if (position != i) {
imageViews[i].setBackgroundResource(R.mipmap.page_indicator_unfocused);
}
}
}
// ,0-- 1-- 2--
@Override
public void onPageScrollStateChanged(int state) {
}
}
}
このように、簡単に画像をスライドさせるデモが完成しました。注意すべき点は、Javaコードの中でImageViewを生成するときに、表示される画像を設定したいなら、setBackground Resource()方法ではなく、setImageResource()方法を使います。以上は小编で绍介したAndroid开発のView Pagerを使って左右のスライド切り替えの効果を実现しました。皆さんに助けてほしいです。もし何か疑问があれば、メッセージをください。