安卓5.0自帶左右滑動(dòng)切換圖片的功能
成都網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)建站!專注于網(wǎng)頁設(shè)計(jì)、重慶網(wǎng)站建設(shè)、微信開發(fā)、微信小程序、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。核心團(tuán)隊(duì)均擁有互聯(lián)網(wǎng)行業(yè)多年經(jīng)驗(yàn),服務(wù)眾多知名企業(yè)客戶;涵蓋的客戶類型包括:鑿毛機(jī)等眾多領(lǐng)域,積累了大量豐富的經(jīng)驗(yàn),同時(shí)也獲得了客戶的一致稱贊!
一、依次點(diǎn) 應(yīng)用程序---相冊
二、隨便點(diǎn)一張圖片
三、圖片不但可左右滑動(dòng)切換,而且底部以黃色框顯示的縮略圖來顯示是哪一張圖片,比圓點(diǎn)顯示進(jìn)步了很多。
主要思路:
1.將指定目錄下的圖片文件添加到一個(gè)ArrayList中
2.通過按鈕來控制ArrayList的指針值
3.通過將File對象轉(zhuǎn)化為Bitmap對象,然后使用ImageView的setImageBitmap()方法來顯示圖片。
首先是布局:
?xml version="1.0" encoding="utf-8"?
LinearLayout xmlns:android=""
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
ImageView
android:id="@+id/imageview"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1" /
LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
Button
android:id="@+id/pre"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="上一張"/
View
android:layout_width="0dp"
android:layout_height="1px"
android:layout_weight="1"/
Button
android:id="@+id/next"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="下一張"/
/LinearLayout
/LinearLayout
界面是介個(gè)樣子的:
然后是Java代碼:
package com.numeron.myimagebrowser;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.Toast;
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.ArrayList;
import static android.os.Environment.getExternalStorageDirectory;
public class MainActivity extends AppCompatActivity implements View.OnClickListener{
private Button pre,next;
private ImageView imageView;
private ArrayListFile images;
private int i = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
this.images = getPath(); //獲取本地圖片集合
init();
}
/**
* 對布局文件進(jìn)行初始化
* */
private void init(){
pre = (Button) findViewById(R.id.pre);
pre.setOnClickListener(this);
next = (Button) findViewById(R.id.next);
next.setOnClickListener(this);
imageView = (ImageView) findViewById(R.id.imageview);
showImage(0);
}
/**
* 為按鍵添加監(jiān)聽事件
* 實(shí)際上就是控制ArrayList集合中指針的數(shù)據(jù)來顯示圖片
* 速度較慢,每次都需要重新讀取。
* */
@Override
public void onClick(View v) {
switch(v.getId()){
case R.id.pre:
i --;
if(i 0) {
i = 0;
Toast.makeText(this, "已經(jīng)是第一張了", Toast.LENGTH_SHORT).show();
break;
}
showImage(i);
break;
case R.id.next:
i ++;
if(i = images.size()) {
i = images.size() - 1;
Toast.makeText(this, "已經(jīng)是最后一張了", Toast.LENGTH_SHORT).show();
break;
}
showImage(i);
break;
}
}
/**
* 通過文件獲取流,將流轉(zhuǎn)化為Bitmap對象
* */
private Bitmap getBMP(File file){
BufferedInputStream in = null;
Bitmap BMP = null;
try{
in = new BufferedInputStream(new FileInputStream(file));
BMP = BitmapFactory.decodeStream(in);
} catch (FileNotFoundException e) {
Toast.makeText(this, "程序異常!", Toast.LENGTH_SHORT).show();
} finally {
if(in != null)
try {
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return BMP;
}
/**
* 將指定目錄下的指定格式的文件存到入集合中。
* */
private ArrayListFile getPath(){
ArrayListFile al = new ArrayList();
File myphotos = new File(getExternalStorageDirectory(),"DCIM");
File[] files = myphotos.listFiles();
for (File file : files) {
if(file.exists() file.isFile() isImage(file)){
al.add(file);
}
}
return al;
}
/**
* 設(shè)置文件過濾器,只需要指定格式的文件
* */
private boolean isImage(File file){
String[] strs = {".jpg",".png,"};
for (String str : strs) {
return file.getName().endsWith(str);
}
return false;
}
/**
* 設(shè)置文件的
* */
private void showImage(int i){
imageView.setImageBitmap(getBMP(this.images.get(i)));
}
}
android手機(jī)實(shí)現(xiàn)圖片預(yù)覽的方法有兩種:
1、akepicture的時(shí)候 如果不開啟下一次 startPreview 應(yīng)該停留在上一次取經(jīng)的回顯界面。 這時(shí)候 讓兩個(gè)button 也就是你的確定和取消要做什么。
2、akepicture后 stopPreview 然后 將返回的data 編程bitmap set到一個(gè)imageView上面
同時(shí)也是顯示出來兩個(gè)button 然后要進(jìn)行操作。
在market里搜a(bǔ)cv,會有一個(gè)軟件,完全符合你的要求,但據(jù)我所知,這個(gè)軟件是圖片軟件里最完美的了,你不妨試一下。
main.xml
先定義一個(gè)GridView,然后再定義一個(gè)ImageSwitcher
LinearLayout?xmlns:android=""??
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal"?
GridView
android:id="@+id/gridView1"
android:layout_height="fill_parent"
android:layout_width="300px"
android:layout_marginTop="6px"
android:horizontalSpacing="3px"
android:verticalSpacing="3px"
android:numColumns="4"/
ImageSwitcher
android:id="@+id/imageSwicher1"
android:padding="20px"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/ImageSwitcher
/LinearLayout
MainActivity代碼如下
public?class?MainActivity?extends?Activity?{
private?int[]?imageId?=?new?int[]?{?R.drawable.w1,?R.drawable.w2,
R.drawable.w3,?R.drawable.w4,?R.drawable.w5,?R.drawable.w6?};
private?ImageSwitcher?imageSwitcher;
@Override
protected?void?onCreate(Bundle?savedInstanceState)?{
//?TODO?Auto-generated?method?stub
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
imageSwitcher?=?(ImageSwitcher)?findViewById(R.id.imageSwicher1);
imageSwitcher.setInAnimation(AnimationUtils.loadAnimation(this,
android.R.anim.fade_in));//?設(shè)置淡入動(dòng)畫
imageSwitcher.setOutAnimation(AnimationUtils.loadAnimation(this,
android.R.anim.fade_out));//?設(shè)置談出動(dòng)畫
imageSwitcher.setFactory(new?ViewFactory()?{
@Override
public?View?makeView()?{
//?TODO?Auto-generated?method?stub
ImageView?imageView?=?new?ImageView(MainActivity.this);//?實(shí)例化一個(gè)ImageView類的對象
imageView.setScaleType(ImageView.ScaleType.FIT_CENTER);//?設(shè)置保持縱橫比居中縮放圖像
imageView.setLayoutParams(new?ImageSwitcher.LayoutParams(//?主要要是用ImageSwitcher的LayoutParams
LayoutParams.WRAP_CONTENT,?LayoutParams.WRAP_CONTENT));
return?imageView;
}
});
imageSwitcher.setImageResource(imageId[0]);
GridView?gridView?=?(GridView)?findViewById(R.id.gridView1);
BaseAdapter?adapter?=?new?BaseAdapter()?{
/*
*?獲得數(shù)量
*
*?@see?android.widget.Adapter#getCount()
*/
@Override
public?int?getCount()?{
//?TODO?Auto-generated?method?stub
return?imageId.length;
}
@Override
public?Object?getItem(int?position)?{
//?TODO?Auto-generated?method?stub
return?position;
}
/**
*?獲得當(dāng)前選項(xiàng)
*/
@Override
public?long?getItemId(int?position)?{
//?TODO?Auto-generated?method?stub
return?position;
}
@Override
public?View?getView(int?position,?View?convertView,?ViewGroup?parent)?{
//?TODO?Auto-generated?method?stub
ImageView?imageView;
if?(convertView?==?null)?{
imageView?=?new?ImageView(MainActivity.this);
/**?設(shè)置圖像的寬度和高度?**/
imageView.setAdjustViewBounds(true);
imageView.setMaxWidth(150);
imageView.setMaxHeight(113);
imageView.setPadding(5,?5,?5,?5);
}?else?{
imageView?=?(ImageView)?convertView;
}
imageView.setImageResource(imageId[position]);
return?imageView;
}
};
gridView.setAdapter(adapter);
gridView.setOnItemClickListener(new?OnItemClickListener()?{
@Override
public?void?onItemClick(AdapterView??arg0,?View?arg1,?int?arg2,
long?arg3)?{
//?TODO?Auto-generated?method?stub
imageSwitcher.setImageResource(imageId[arg2]);//?顯示選中的圖片
}
});
}
}
讀圖片的是侯要選擇你要讀的文件夾 按目錄打開 有些讀取的圖片是瀏覽器默認(rèn)的
網(wǎng)站欄目:android瀏覽圖片,android 讀取圖片
文章起源:http://jinyejixie.com/article30/dsdjopo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供建站公司、外貿(mào)網(wǎng)站建設(shè)、軟件開發(fā)、云服務(wù)器、全網(wǎng)營銷推廣、品牌網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)