Android 手势 正则匹配图片实例代码
程序员文章站
2022-04-13 22:45:47
为没有手势的控件(viewflipper) 添加手势
xml
为没有手势的控件(viewflipper) 添加手势
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" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.example.mygesture.mainactivity"> <viewflipper android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/vf_main_one" ></viewflipper> </linearlayout>
activity
控件中,我放入的是手机内存中的所有图片,所有必须先获取读取的权限
在 androidmanifest.xml 文件中获取权限
<uses-permission android:name="android.permission.read_external_storage"></uses-permission> package com.example.mygesture; import android.graphics.bitmap; import android.graphics.bitmapfactory; import android.os.environment; import android.os.patternmatcher; import android.support.v7.app.appcompatactivity; import android.os.bundle; import android.util.log; import android.view.gesturedetector; import android.view.motionevent; import android.widget.imageview; import android.widget.toast; import android.widget.viewflipper; import java.io.inputstream; import java.util.linkedlist; import java.util.list; import java.util.regex.matcher; import java.util.regex.pattern; public class mainactivity extends appcompatactivity { private viewflipper viewflipper; private list<imageview> list=new linkedlist<>(); private gesturedetector jc; @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); //取到控件 viewflipper = (viewflipper)findviewbyid(r.id.vf_main_one); //判断内存卡,是否可用 if(environment.getexternalstoragestate().equals(environment.media_mounted)){ //取到内存卡的绝对路径 string abspath=environment.getexternalstoragedirectory().getabsolutepath(); //建立文件对象 file file=new file(abspath); //取到内存卡内的所有文件、文件夹 file [] filetwo=file.listfiles(); for (file file1 : filetwo) { try { //调用文件的递归方法 traversalsearch(file1); } catch (ioexception e) { e.printstacktrace(); } } } //集合中的图片是,内存卡内的所有图片 for (imageview imageview : list) { //把集合中的所有图片加入到(viewflipper)控件中 viewflipper.addview(imageview); } //建立手势检测器,参数一:上下文 参数二 检测器的检测事件 jc = new gesturedetector(this,new gesturedetector.ongesturelistener(){ @override public boolean ondown(motionevent e) { //按下触发 return false; } @override public void onshowpress(motionevent e) { } @override public boolean onsingletapup(motionevent e) { //轻按触发 return false; } @override public boolean onscroll(motionevent e1, motionevent e2, float distancex, float distancey) { //移动触发 return false; } @override public void onlongpress(motionevent e) { //常按 触发 } @override //滑动完后,触发 public boolean onfling(motionevent e1, motionevent e2, float velocityx, float velocityy) { //本方法,参数一:起始位置 参数二:结束位置 ,参数三四:x轴 y轴 if(e2.getx()-e1.getx()>200){ //显示上一张 viewflipper.showprevious(); toast.maketext(mainactivity.this, " 001", toast.length_short).show(); } if(e1.getx()-e2.getx()>200){ //显示下一张 viewflipper.shownext(); toast.maketext(mainactivity.this, " 004", toast.length_short).show(); } return false; } }); } @override //重写 触摸 回调函数 public boolean ontouchevent(motionevent event) { //给手势检测器设定触摸函数,必写! return jc.ontouchevent(event); } // 查询所有文件的递归方法 public void traversalsearch(file file) throws ioexception { if(file.isdirectory()){ file [] filetwo=file.listfiles(); for (file file1 : filetwo) { traversalsearch(file1); } }else{ string name=file.getname(); //图片格式 string regstr = "[gg][ii][ff]|[jj][pp][gg]|[bb][mm][pp]|[jj][pp][ee][gg]"; //把正则 匹配的格式放入 类中 pattern pattern = pattern.compile(regstr); //把需要匹配的,放入 matcher matcher = pattern.matcher(name); //匹配结果,符合为true 反之false if(matcher.find()){ imageview image=new imageview(this); //通过绘图工厂,利用文件路径取到,文件 bitmap bitmap= bitmapfactory.decodefile(file.getabsolutepath().trim()); //把图片文件设置入图片控件内 image.setimagebitmap(bitmap); if(list.size()<20){ //我只加入二十个图片,过多,内存溢出 list.add(image); } } } } }
以上所述是小编给大家介绍的android 手势 正则匹配图片实例代码,希望对大家有所帮助