读取SD卡图片,并自动轮播

1、加权限

 

    <!-- 授予读取外部存储设备的的访问权限 -->
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
    <!-- 授予写入外部存储设备的的访问权限 -->
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>


2、简单的布局

 

 

<android.support.constraint.ConstraintLayout 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.dyw.imagehandler.MainActivity">

    <ImageView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/image1"
        android:scaleType="fitCenter"/>

</android.support.constraint.ConstraintLayout>


3、Java代码

 

 

public class MainActivity extends AppCompatActivity {
    ImageView image1;
    ArrayList<String> fileNames = new ArrayList<>();
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        fileNames.clear();
        //通过ContentResolver查询所有图片信息
        Cursor cursor = getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,null,null,null,null);
        while (cursor.moveToNext())
        {
            byte[] data = cursor.getBlob(cursor.getColumnIndex(MediaStore.Images.Media.DATA));
            //将图片保存路径添加到fileNames集合中
            fileNames.add(new String(data,0,data.length-1));
            Log.d("---fileNames---",fileNames+"");
        }
        final int[] currentImg = {2};
        image1 =(ImageView) findViewById(R.id.image1);
        final Handler myhandler = new Handler(){
            @Override
            public void handleMessage(Message msg) {
                if (msg.what==1)
                {
                      image1.setImageBitmap(BitmapFactory.decodeFile(fileNames.get(++currentImg[0]%fileNames.size())));
                }
            }
        };
        new Timer().schedule(new TimerTask() {
            @Override
            public void run() {
                myhandler.sendEmptyMessage(1);
            }
        },0,1500);
    }
}

请多指教!!

关注我的技术公众号,每个工作日都有优质技术文章推送。
微信扫一扫下方二维码即可关注:

FPGA设计读取SD卡中的图片并通过VGA屏显示输出的Verilog设计Quartus工程源码文件,FPGA型号Cyclone4E系列中的EP4CE10F17C8,Quartus版本18.0。 module top_sd_photo_vga( input sys_clk , //系统时钟 input sys_rst_n , //系统复位,低电平有效 //SD卡接口 input sd_miso , //SD卡SPI串行输入数据信号 output sd_clk , //SD卡SPI时钟信号 output sd_cs , //SD卡SPI片选信号 output sd_mosi , //SD卡SPI串行输出数据信号 //SDRAM接口 output sdram_clk , //SDRAM 时钟 output sdram_cke , //SDRAM 时钟有效 output sdram_cs_n , //SDRAM 片选 output sdram_ras_n , //SDRAM 行有效 output sdram_cas_n , //SDRAM 列有效 output sdram_we_n , //SDRAM 写有效 output [1:0] sdram_ba , //SDRAM Bank地址 output [1:0] sdram_dqm , //SDRAM 数据掩码 output [12:0] sdram_addr , //SDRAM 地址 inout [15:0] sdram_data , //SDRAM 数据 //VGA接口 output vga_hs , //行同步信号 output vga_vs , //场同步信号 output [15:0] vga_rgb //红绿蓝三原色输出 ); //parameter define parameter PHOTO_H_PIXEL = 24'd640 ; //设置SDRAM缓存大小 parameter PHOTO_V_PIXEL = 24'd480 ; //设置SDRAM缓存大小 //wire define wire clk_100m ; //100mhz时钟,SDRAM操作时钟 wire clk_100m_shift ; //100mhz时钟,SDRAM相位偏移时钟 wire clk_50m ; wire clk_50m_180deg ; wire clk_25m ; wire rst_n ; wire locked ; wire sys_init_done ; //系统初始化完成 wire sd_rd_start_en ; //开始写SD卡数据信号 wire [31:0] sd_rd_sec_addr ; //读数据扇区地址 wire sd_rd_busy ; //读忙信号 wire sd_rd_v
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值