Android 手势 正则匹配图片实例代码
作者:One_sir_zeng 发布时间:2021-09-22 05:23:42
标签:android,正则,匹配
为没有手势的控件(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 手势 正则匹配图片实例代码网站的支持!
来源:http://blog.csdn.net/one_sir_zeng/article/details/75000710
0
投稿
猜你喜欢
- 一般有点开发经验的朋友都能实现这样的功能,只不过是效率上的问题。我们一般在面对这样的问题时,总会平铺直序的联想到,先生成一个数组,然后在一个
- springmvc除了自带的部分类型转换之外,还可以自定义类型转换器,按照以下步骤:1、写一个类实现Converter接口package c
- DeferredResult的超时处理,采用委托机制,也就是在实例DeferredResult时给予一个超时时长(毫秒),同时在onTime
- 本文实例讲述了java生成随机数的方法。分享给大家供大家参考。具体实现方法如下:package com.tool.code; import
- 给新建的winform程序添加资源文件夹Resources小菜鸟开始学习WinForm程序别人的项目都有资源文件夹放图片之类的,我的就是没有
- 一.介绍Apache Shiro是Java的一个安全框架。目前,使用Apache Shiro的人越来越多,因为它相当简单,对比Spring
- 引言在前两篇文章中,我们了解了ReentrantLock内部公平锁和非公平锁的实现原理,可以知道其底层基于AQS,使用双向链表实现,同时在线
- 最近在使用springboot过程中用到了mybatis-plus ,springboot版本是2.3.1.RELEASE,mybatis-
- 一、Optional类的出现到目前为止,臭名昭著的空指针异常是导致Java应用程序失败的最常见原因。以前,为了解决空指针异常,Google公
- WPF中有一个DrawingContext类,该类提供了很多画法方法,例如DrawLine,DrawText,DrawRectangle等。
- 本文实例为大家分享了Android实现简单垂直进度条的具体代码,供大家参考,具体内容如下代码注释特别清晰,就不多解释了支持属性:progre
- 引入dll 本次程序中引入的是Spire.Pdf.dll,引入方法如下:【方法1】通过NuGet安装。可以在Visual Stud
- java自定义切面增强写代码时会遇到一些有些重复机械的工作, 这个时候就可以运用切面技术来帮我们节约时间介绍如何使用自定义注解增强方法, 实
- 一个简单好理解的例子,复制过去就能用,能看到效果首先对功能的思考,他怎么去实现1.制定udp广播的端口(如果收发用同一个端口就会一直接收到自
- macOS搭建Spring Boot开发环境,具体内容如下软硬件环境macOS Sierrajava 1.8.0_65maven 3.5.0
- Java 多文件加密压缩 添加文件加密压缩工具包依赖<!-- zip4j压缩工具 --> <dependenc
- 一、概述ExpandableListView是常用的一个控件,今天自己做了个小练习,主要需求是单选以及多选的实现,看似比较简单,但是还是比较
- 一、概念 1. 为了能让程序操作数据库,对数据库中的表进行操作,每一种数据库都会提供一套连接和操作该数据库的驱动,而且每种数据库
- 本文实例讲述了Android播放assets文件里视频文件相关问题。分享给大家供大家参考,具体如下:今天做了一个功能,就是播放项目工程里面的
- 本篇我们讲解下使用spring创建bean的几种方式,创建bean,也可以叫组件注册,就是把单例bean放到spring容器中。我们定义如下