Android 图片自动轮播

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
package xatu.cn.androidtest_one; import android.content.ContentResolver; import android.content.Intent; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.net.Uri; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.ImageView; import java.io.FileNotFoundException; /* 从手机相册中选择一幅图片并显示在屏幕上 */ public class MainActivity extends AppCompatActivity { private Button btn_choose; private ImageView img_show; private final int REQUEST_PICTURE_CHOOSE = 1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); init(); event(); } private void init() { btn_choose = findViewById(R.id.btn_choose_picture); img_show = findViewById(R.id.imgview_src); } private void event() { btn_choose.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(); intent.setType("image/*"); intent.setAction(Intent.ACTION_PICK); startActivityForResult(intent, REQUEST_PICTURE_CHOOSE); } }); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (resultCode == RESULT_OK){ Uri uri = data.getData(); Log.e("uri", uri.toString()); ContentResolver cr = this.getContentResolver(); try { Bitmap bitmap = BitmapFactory.decodeStream(cr.openInputStream(uri)); ImageView imageView = (ImageView) findViewById(R.id.imgview_src); /* 将Bitmap设定到ImageView */ imageView.setImageBitmap(bitmap); } catch (FileNotFoundException e) { e.printStackTrace(); } } super.onActivityResult(requestCode, resultCode, data); } } 页面布局代码: <?xml version="1.0" encoding="utf-8"?> <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <Button android:id="@+id/btn_choose_picture" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="选择图片" /> <ImageView android:id="@+id/imgview_src" android:layout_width="wrap_content" android:layout_height="0dp" android:layout_weight="1" /> </LinearLayout> </android.support.constraint.ConstraintLayout>
要实现Android图片自动切换,可以使用ViewPager和Handler结合的方式。首先,将需要自动切换的图片放置在ViewPager中,然后使用Handler定时发送消息,每次接收到消息后通过ViewPager的setCurrentItem方法切换到下一张图片即可。 具体实现步骤如下: 1. 在布局文件中添加ViewPager控件,并设置好需要自动切换的图片。 2. 在Activity中获取ViewPager控件,并创建一个Handler对象。 3. 在Handler的run方法中,调用ViewPager的setCurrentItem方法切换到下一张图片,并使用postDelayed方法延迟一定时间后再次发送消息,实现自动切换的效果。 下面是代码示例: ```java public class MainActivity extends AppCompatActivity { private ViewPager mViewPager; private Handler mHandler; private int mCurrentItem = 0; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mViewPager = findViewById(R.id.view_pager); MyPagerAdapter adapter = new MyPagerAdapter(getSupportFragmentManager()); mViewPager.setAdapter(adapter); mHandler = new Handler(); mHandler.postDelayed(new Runnable() { @Override public void run() { mCurrentItem++; if (mCurrentItem >= adapter.getCount()) { mCurrentItem = 0; } mViewPager.setCurrentItem(mCurrentItem); mHandler.postDelayed(this, 3000); } }, 3000); } @Override protected void onDestroy() { super.onDestroy(); mHandler.removeCallbacksAndMessages(null); } private static class MyPagerAdapter extends FragmentPagerAdapter { private static final int[] IMAGES = {R.drawable.image1, R.drawable.image2, R.drawable.image3}; public MyPagerAdapter(FragmentManager fm) { super(fm); } @Override public Fragment getItem(int position) { return ImageFragment.newInstance(IMAGES[position]); } @Override public int getCount() { return IMAGES.length; } } public static class ImageFragment extends Fragment { private static final String ARG_IMAGE_RES_ID = "image_res_id"; public static ImageFragment newInstance(int imageResId) { ImageFragment fragment = new ImageFragment(); Bundle args = new Bundle(); args.putInt(ARG_IMAGE_RES_ID, imageResId); fragment.setArguments(args); return fragment; } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_image, container, false); ImageView imageView = view.findViewById(R.id.image_view); int imageResId = getArguments().getInt(ARG_IMAGE_RES_ID); imageView.setImageResource(imageResId); return view; } } } ``` 在上述代码中,我们使用了FragmentPagerAdapter来管理ViewPager中的图片,每个Fragment都显示一个ImageView控件来展示图片。 在Activity的onCreate方法中,我们创建了一个Handler对象,并在其中调用了ViewPager的setCurrentItem方法切换到下一张图片,并使用postDelayed方法延迟3秒后再次发送消息,实现自动切换的效果。在Activity的onDestroy方法中,我们需要调用Handler的removeCallbacksAndMessages方法,确保在Activity销毁时停止自动切换。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值