精华内容
下载资源
问答
  • 安卓网络图片查看器安卓制作一个网络图片查看器http请求图片的流程http get请求服务端返回数据 2进制流的方式代码实现步骤URL url = new URL(path);通过url打开一个对应的连接httpUrlConnection();设置一些初始化的...

    安卓网络图片查看器

    安卓

    制作一个网络图片查看器http请求图片的流程http get请求

    服务端返回数据 2进制流的方式代码实现步骤URL url = new URL(path);

    通过url打开一个对应的连接httpUrlConnection();

    设置一些初始化的参数,请求方法(GET,POST)请求头

    获取服务器端响应conn.getResponseCode()

    返回200 OK 400 资源找不到 503 服务器内部错误

    com。getInputStream();服务器返回的数据量流因为需要访问网络,所以AndroidManifest.xml中需要添加网络权限

    android stusio添加网络权限

    网络在主线程的异常

    NetWorkOnMainThreadException从android4.0开始,为了让应用程序更加流畅,google强制要求访问网络的操作只能在子线程

    activity的onCreate方法和点击事件这些方法都是运行在主线程里面(UI线程)只有主线程可以修改应用程序的ui,其他线程修改的界面是不运行的

    目录结构manifests

    AndroidManifest.xml

    java

    Mainactivity

    layout

    activity_main

    Mainactivitypublic class MainActivity extends AppCompatActivity {

    private EditText et_image;

    private ImageView iv;

    //这里导包需要导入andoird.os中的包

    private Handler handler = new Handler(){

    //在这里ctrl+o可以快速重写方法,选择handleMessage

    @Override

    public void handleMessage(Message msg) {

    super.handleMessage(msg);

    //用Bitmap接收msg

    Bitmap bitmap = (Bitmap) msg.obj;

    iv.setImageBitmap(bitmap);

    }

    };

    protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_main);

    et_image = (EditText) findViewById(R.id.et_image);

    iv = (ImageView) findViewById(R.id.iv);

    }

    }

    //查看图片

    public void image(View view){

    final String path = et_image.getText().toString().trim();

    if(TextUtils.isEmpty(path)){

    Toast.makeText(this,"图片路径不能为空",Toast.LENGTH_SHORT).show();

    }else {

    //安卓4.0以后的UI修改只能在子线程进行

    //所以新建一个子线程

    //new Thread(){}.start();

    new Thread(){

    @Override

    public void run() {

    //下载网络上的图片,显示到imageView里

    try {

    //1.创建URL对象

    URL url = new URL(path);

    //2.通过url对象打开http连接

    HttpURLConnection conn = (HttpURLConnection) url.openConnection();

    //conn设置请求方式为GET

    conn.setRequestMethod("GET");

    conn.setRequestProperty("Accept","text/php,*.png,*/*");

    int code = conn.getResponseCode();

    //200 ok 404文件不存在或者503服务器内部错误

    if(code == 200){

    //得到服务器返回的数据流

    InputStream is = conn.getInputStream();

    Bitmap bitmap = BitmapFactory.decodeStream(is);

    //iv.setImageBitmap(bitmap);

    //由于子线程不可以直接修改ui

    //这里是先获取数据后,调用主线程的handler发消息去更新ui

    Message msg = new Message();

    //把获取到的bitmap放到msg盒子里

    msg.obj = bitmap;

    handler.sendMessage(msg);

    }else {

    }

    } catch (IOException e) {

    e.printStackTrace();

    }

    }

    }.start();

    }

    }

    }

    activity_main.xml<?xml version="1.0" encoding="utf-8"?>

    xmlns:tools="http://schemas.android.com/tools"

    android:id="@+id/activity_main"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    android:orientation="vertical"

    tools:context="cn.guotianyu.musicplayer.MainActivity">

    android:layout_width="match_parent"

    android:layout_height="wrap_content"

    android:orientation="horizontal">

    android:id="@+id/et_image"

    android:layout_width="match_parent"

    android:layout_height="wrap_content"

    android:layout_weight="1.5"

    android:hint="请输入网络图片路径"

    android:text="http://guotianyu.cn:211/mouse.png"/>

    android:id="@+id/bt_image"

    android:layout_width="wrap_content"

    android:layout_height="wrap_content"

    android:onClick="image"

    android:text="查看"/>

    android:id="@+id/iv"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    android:background="#ff00ff"/>

    展开全文
  • 功能如下:获取安卓assets文件内的图片 如果对assets文件如何创建不是很熟悉参考以下文章 https://blog.csdn.net/chuyouyinghe/article/details/79891934 图片就随便吧只要不是太大都能读出来 布局页面及其简单先来...

    在这里插入图片描述
    功能如下:获取安卓assets文件内的图片
    如果对assets文件如何创建不是很熟悉参考以下文章
    https://blog.csdn.net/chuyouyinghe/article/details/79891934
    图片就随便吧只要不是太大都能读出来
    布局页面及其简单先来看一下:

    <?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="com.example.cxc.bitmapt.MainActivity">
    
        <Button
            android:id="@+id/next"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_marginTop="160dp"
            android:text="下一个"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintHorizontal_bias="1.0"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="@+id/image" />
    
        <ImageView
            android:id="@+id/image"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:scaleType="fitCenter"
            tools:layout_editor_absoluteX="0dp"
            tools:layout_editor_absoluteY="0dp" />
    
    </android.support.constraint.ConstraintLayout>
    
    

    主页面

    //图片查看器
    public class MainActivity extends AppCompatActivity implements View.OnClickListener {
    	String[]     imageArray   = null;
    	AssetManager assetsManager = null;
    	int          currentImgNo = 0;
    	private Button    next;
    	private ImageView image;
    
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.activity_main);
    		initView();
    
    
    	}
    
    	private void initView() {
    		next = (Button) findViewById(R.id.next);
    		image = (ImageView) findViewById(R.id.image);
    
    		next.setOnClickListener(this);
    	}
    	@Override
    	public void onClick(View v) {
    		switch (v.getId()) {
    			case R.id.next:
    				try
    				{
    					assetsManager = getAssets();
    					//获取/assets/目录下所有文件
    					imageArray = assetsManager.list("");
    				}
    				catch (IOException e)
    				{
    					e.printStackTrace();
    				}
    				//为bn按钮绑定事件监听器,该监听器将会查看下一张图片
    				next.setOnClickListener(new View.OnClickListener()
    				{
    					@Override
    					public void onClick(View sources)
    					{
    						//如果发生数组越界
    						if (currentImgNo >= imageArray.length)
    						{
    							currentImgNo = 0;
    						}
    						//找到下一个图片文件
    						while (!imageArray[currentImgNo].endsWith(".png")
    								&& !imageArray[currentImgNo].endsWith(".jpg")
    								&& !imageArray[currentImgNo].endsWith(".gif"))
    						{
    							currentImgNo++;
    							//如果已发生数组越界
    							if (currentImgNo >= imageArray.length)
    							{
    								currentImgNo = 0;
    							}
    						}
    						InputStream assetFile = null;
    						try
    						{
    							//打开指定资源对应的输入流
    							assetFile = assetsManager.open(imageArray[currentImgNo++]);
    						}
    						catch (IOException e)
    						{
    							e.printStackTrace();
    						}
    						BitmapDrawable bitmapDrawable = (BitmapDrawable) image
    								.getDrawable();
    						//如果图片还未回收,先强制回收该图片
    						if (bitmapDrawable != null
    								&& !bitmapDrawable.getBitmap().isRecycled())             //①
    						{
    							bitmapDrawable.getBitmap().recycle();
    						}
    						//改变ImageView显示的图片
    						image.setImageBitmap(BitmapFactory.decodeStream(assetFile)); //②
    					}
    				});
    				break;
    		}
    	}
    }
    
    

    项目GIthub地址:https://github.com/307572384/Bitmapt

    展开全文
  • Android图片查看器

    2018-03-05 13:37:32
    用于android开发者开发自定义相册,使用glide加载图片
  • android:text="http://172.16.40.157:8080/tomcat.png" android:layout_height="wrap_content" /> android:id="@+id/chakan" android:layout_width="match_parent" android:layout_height="wrap_content" ...

    StreamTool:将InputStream转化为ByteArray

    package util;
    
    import java.io.ByteArrayOutputStream;
    import java.io.InputStream;
    
    public class StreamTool {
    	/**
    	 * 把一个inputstream里面的内容转化成一个byte[]
    	 */
    
    	public static byte[] getBytes(InputStream is) throws Exception {
    		ByteArrayOutputStream bos = new ByteArrayOutputStream();
    		byte[] buffer = new byte[1024];
    		int len = 0;
    		while ((len = is.read(buffer)) != -1) {
    			bos.write(buffer, 0, len);
    		}
    		is.close();
    		bos.flush();
    		byte[] result = bos.toByteArray();
    		System.out.println(new String(result));
    		return result;
    	}
    }
    NetUtil.java:

    package service;
    
    import java.io.InputStream;
    import java.net.HttpURLConnection;
    import java.net.MalformedURLException;
    import java.net.URL;
    import java.net.URLConnection;
    
    import util.StreamTool;
    
    import android.graphics.Bitmap;
    import android.graphics.BitmapFactory;
    
    public class NetUtil {
    	/**
    	 * 获取网络address地址对应的图片
    	 * 
    	 * @param address
    	 * @return bitmap的类型
    	 */
    	public static Bitmap getImage(String address) throws Exception {
    		// 通过代码 模拟器浏览器访问图片的流程
    		URL url = new URL(address);
    		HttpURLConnection conn = (HttpURLConnection) url.openConnection();
    		conn.setRequestMethod("GET");
    		conn.setConnectTimeout(5000);
    		// 获取服务器返回回来的流
    		InputStream is = conn.getInputStream();
    		byte[] imagebytes = StreamTool.getBytes(is);
    		Bitmap bitmap = BitmapFactory.decodeByteArray(imagebytes, 0,
    				imagebytes.length);
    		return bitmap;
    	}
    }
    MainActivity
    package com.example.entimageviewer;
    
    import java.io.IOException;
    import java.net.SocketTimeoutException;
    
    import service.NetUtil;
    
    import android.app.Activity;
    import android.graphics.Bitmap;
    import android.os.Bundle;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    import android.widget.EditText;
    import android.widget.ImageView;
    import android.widget.Toast;
    
    public class MainActivity extends Activity implements OnClickListener {
    	private EditText mEtAddress;
    	private Button mBtView;
    	private ImageView mIvView;
    
    	@Override
    	public void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.main);
    		mEtAddress = (EditText) this.findViewById(R.id.editText1);
    		mBtView = (Button) this.findViewById(R.id.chakan);
    		mIvView = (ImageView) this.findViewById(R.id.imageView1);
    		mBtView.setOnClickListener(this);
    	}
    
    	public void onClick(View v) {
    		switch (v.getId()) {
    		case R.id.chakan:
    			// 按钮对应的点击事件
    			String address = mEtAddress.getText().toString().trim();
    			if ("".equals(address)) {
    				Toast.makeText(this, "图片地址不能为空", Toast.LENGTH_SHORT).show();
    				return;
    			}
    			try {
    				Bitmap bitmap = NetUtil.getImage(address);
    				mIvView.setImageBitmap(bitmap);
    			} catch (Exception e) {
    				if (e instanceof SocketTimeoutException) {
    					Toast.makeText(this, "网络连接超时", Toast.LENGTH_SHORT).show();
    				} else if (e instanceof IOException) {
    					Toast.makeText(this, "读取数据错误 ", Toast.LENGTH_SHORT).show();
    				} else {
    					Toast.makeText(this, "未知错误 ", Toast.LENGTH_SHORT).show();
    				}
    				e.printStackTrace();
    			}
    			break;
    		}
    	}
    }
    main.xml:

    <?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical" >
    
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/input_address" />
    
        <EditText
            android:id="@+id/editText1"
            android:layout_width="match_parent"
            android:lines="2"
            android:text="http://172.16.40.157:8080/tomcat.png"
            android:layout_height="wrap_content" />
    
        <Button
            android:id="@+id/chakan"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="@string/go" />
        <ImageView
            android:id="@+id/imageView1"
            android:scaleType="center"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />
    
    </LinearLayout>
    展开全文
  • 本文介绍了Android 简单的图片查看器源码实现,分享给大家,具体如下: public class MainActivity extends Activity { private EditText et_path; private ImageView iv; //创建handler 对象 // private Handler...
  • 1、添加依赖 implementation '... } private void showNormalDialogOne() { /* @setIcon 设置对话框图标 * @setTitle 设置对话框标题...

    1、添加依赖

    implementation 'com.github.bumptech.glide:glide:4.6.1'
    compile 'com.github.chrisbanes:PhotoView:2.0.0'
    compile 'com.squareup.okhttp3:okhttp:3.9.0'

    2、实现fragmentactivity:

    /**
     * 作者:created by meixi
     * 邮箱:13164716840@163.com
     * 日期:2018/9/21 14
     */
    
    
    public class ImagePagerActivity extends FragmentActivity {
        private static final String TAG = "ImagePagerActivity";
        private static final String STATE_POSITION = "STATE_POSITION";
        public static final String EXTRA_IMAGE_INDEX = "image_index";
        public static final String EXTRA_IMAGE_URLARRAYS = "image_urlArrays";
        private HackyViewPager mPager;
        private int pagerPosition;
        private TextView indicator;
    
        @Override
        protected void onCreate(@Nullable Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.image_xinshi_detail_pager);
            mPager = (HackyViewPager) findViewById(R.id.vp_pager);
            indicator = (TextView) findViewById(R.id.indicator);
            initVariables();
            initEvents();
        }
    
        private void initVariables() {
            pagerPosition = getIntent().getIntExtra(EXTRA_IMAGE_INDEX, 0);
            ArrayList<String> urlArrays = getIntent().getStringArrayListExtra(EXTRA_IMAGE_URLARRAYS);
            ImagePagerAdapter mAdapter = new ImagePagerAdapter(getSupportFragmentManager(), urlArrays);
            mPager.setAdapter(mAdapter);
            CharSequence text = getString(R.string.viewpager_indicator, 1, mPager.getAdapter().getCount());
            indicator.setText(text);
        }
    
        //这块的考虑再说
        @Override
        protected void onSaveInstanceState(Bundle outState) {
            super.onSaveInstanceState(outState);
            //   outState.putInt(STATE_POSITION, mPager.getCurrentItem());
        }
    
        private void initEvents() {
            // 更新下标
            mPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
    
                @Override
                public void onPageScrollStateChanged(int arg0) {
                }
    
                @Override
                public void onPageScrolled(int arg0, float arg1, int arg2) {
                }
    
                @Override
                public void onPageSelected(int arg0) {
                    CharSequence text = getString(R.string.viewpager_indicator, arg0 + 1, mPager.getAdapter().getCount());
                    indicator.setText(text);
                }
    
            });
            mPager.setCurrentItem(pagerPosition);
    
        }
    
    
        private class ImagePagerAdapter extends FragmentStatePagerAdapter {
    
            public ArrayList<String> urlArrays;
    
            public ImagePagerAdapter(FragmentManager fm, ArrayList<String> urlArrays) {
                super(fm);
                this.urlArrays = urlArrays;
            }
    
            @Override
            public int getCount() {
                return urlArrays == null ? 0 : urlArrays.size();
            }
    
            @Override
            public Fragment getItem(int position) {
                String url = urlArrays.get(position);
                return ImageDetailFragment.newInstance(url);
    
            }
    
        }
    }
    

    3、两个工具类:

    public class ImageDetailFragment extends Fragment {
        private static final String TAG = "ImageDetailFragment";
        private String mImageUrl;
        private View rootView;
        private PhotoView mImageView;
        private ProgressBar progressBar;
        private TextView baocunte;
        private PhotoViewAttacher mAttacher;
    
    
        private String SAVE_PIC_PATH = Environment.getExternalStorageState().equalsIgnoreCase(Environment.MEDIA_MOUNTED)
                ? Environment.getExternalStorageDirectory().getAbsolutePath() : "/mnt/sdcard";//
    
        private String SAVE_REAL_PATH = SAVE_PIC_PATH + "/good/savePic";//保存的确
        Bitmap bitmap;
    
    
        public static ImageDetailFragment newInstance(String imageUrl) {
            final ImageDetailFragment f = new ImageDetailFragment();
            final Bundle args = new Bundle();
            args.putString("url", imageUrl);
            f.setArguments(args);
            return f;
        }
    
        @Override
        public void onCreate(@Nullable Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            mImageUrl = getArguments() != null ? getArguments().getString("url") : null;
    
            new Thread(runnable).start();
    
    
        }
    
        @Nullable
        @Override
        public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
            // return super.onCreateView(inflater, container, savedInstanceState);
            if (rootView == null) {
                rootView = inflater.inflate(R.layout.image_xinshi_detail_fragment, container, false);
                mImageView = (PhotoView) rootView.findViewById(R.id.image);
                progressBar = (ProgressBar) rootView.findViewById(R.id.loading);
                baocunte  =(TextView)rootView.findViewById(R.id.baochunte);
                Log.e(TAG, "onCreateView:---------------- ");
            }else {
                ViewGroup parent = (ViewGroup) rootView.getParent();
                if (parent != null) {
                    parent.removeView(rootView);
                }
            }
    
            return rootView;
        }
    
        /*    策略解说:
            all:缓存源资源和转换后的资源
            none:不作任何磁盘缓存
            source:缓存源资源
            result:缓存转换后的资源*/
        @Override
        public void onActivityCreated(@Nullable Bundle savedInstanceState) {
            super.onActivityCreated(savedInstanceState);
            progressBar.setVisibility(View.VISIBLE);
            Glide.with(ImageDetailFragment.this).load(mImageUrl).placeholder(R.mipmap.icon_defaultimg) // 占位图
                    .error(R.mipmap.icon_errorimg)
                    .diskCacheStrategy(DiskCacheStrategy.RESULT)//图片缓存模式
                    .listener(new GlideRequestListener()).into(mImageView);
        }
    
        //glide 请求的回调
        private class GlideRequestListener implements RequestListener {
    
            @Override
            public boolean onException(Exception e, Object model, Target target, boolean isFirstResource) {
                Toast.makeText(getActivity(), "加载图片失败", Toast.LENGTH_SHORT).show();
                progressBar.setVisibility(View.GONE);
                return false;
            }
    
            //这个用于监听图片是否加载完成
            @Override
            public boolean onResourceReady(Object resource, Object model, Target target, boolean isFromMemoryCache, boolean isFirstResource) {
                mAttacher = new PhotoViewAttacher(mImageView);
                mAttacher.setOnPhotoTapListener(new OnPhotoTapListener() {
                    @Override
                    public void onPhotoTap(ImageView view, float x, float y) {
                        getActivity().finish();
                    }
                });
                mAttacher.setOnLongClickListener(new View.OnLongClickListener() {
                    @Override
                    public boolean onLongClick(View v) {
                        Log.i("Lgq","...... "+mImageUrl);
                        showNormalDialogOne();
                        Toast.makeText(getActivity(), "触发长按事件", Toast.LENGTH_SHORT).show();
                        return false;
                    }
                });
                baocunte.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View view) {
                        try {
                            saveFile(bitmap, System.currentTimeMillis() + ".jpg");
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                    }
                });
                progressBar.setVisibility(View.GONE);
                return false;
            }
        }
    
    
        private void saveFile(Bitmap bm, String fileName) throws IOException {
            String subForder = SAVE_REAL_PATH;
            File foder = new File(subForder);
            if (!foder.exists()) foder.mkdirs();
    
            File myCaptureFile = new File(subForder, fileName);
            Log.v("lgq","图片保持。。。。。。。。"+myCaptureFile);
            Log.v("lgq","图片保持。。。。。getPath。。。"+myCaptureFile.getPath());
            if (!myCaptureFile.exists()) myCaptureFile.createNewFile();
            BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(myCaptureFile));
            bm.compress(Bitmap.CompressFormat.JPEG, 100, bos);
            bos.flush();
            bos.close();
            Toast.makeText(getContext(),"已保存在/good/savePic目录下", Toast.LENGTH_SHORT).show();
            //发送广播通知系统
            Intent intent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
            Uri uri = Uri.fromFile(myCaptureFile);
            intent.setData(uri);
            getActivity().sendBroadcast(intent);
        }
    
        @SuppressLint("HandlerLeak")
        private Handler handler = new Handler() {
            @Override
            public void handleMessage(Message msg) {
                if (msg.what == 1) {
    
                }
            }
        };
    
    
        Runnable runnable = new Runnable() {
    
            @Override
            public void run() {
                try {
                    bitmap = ((BitmapDrawable) loadImageFromUrl(mImageUrl)).getBitmap();
                    Message msg = new Message();
                    msg.what = 1;
                    handler.sendMessage(msg);
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        };
    
    
        private static Drawable loadImageFromUrl(String url) throws IOException {
            URL m = new URL(url);
            InputStream i = (InputStream) m.getContent();
            return Drawable.createFromStream(i, "src");
        }
    
    
        private void showNormalDialogOne() {
            /* @setIcon 设置对话框图标
             * @setTitle 设置对话框标题
             * @setMessage 设置对话框消息提示
             * setXXX方法返回Dialog对象,因此可以链式设置属性
             */
            final AlertDialog.Builder normalDialog = new AlertDialog.Builder(getContext());
            normalDialog.setTitle("提示");
            normalDialog.setMessage("确定保存图片!");
            normalDialog.setPositiveButton("确定",
                    new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            try {
                                saveFile(bitmap, System.currentTimeMillis() + ".jpg");
                            } catch (IOException e) {
                                e.printStackTrace();
                            }
    
                            // delehistory();//dosomething
                        }
                    });
            normalDialog.setNegativeButton("取消",
                    new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                        }
                    });
            normalDialog.show();
        }
    
    }
    

    、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、

    public class HackyViewPager extends ViewPager {
    
        private static final String TAG = "HackyViewPager";
    
        public HackyViewPager(Context context) {
            super(context);
        }
    
        public HackyViewPager(Context context, AttributeSet attrs) {
            super(context, attrs);
        }
    
        @Override
        public boolean onInterceptTouchEvent(MotionEvent ev) {
            try {
                return super.onInterceptTouchEvent(ev);
            } catch (IllegalArgumentException e) {
                // 不理会
                Log.e(TAG, "hacky viewpager error1");
                return false;
            } catch (ArrayIndexOutOfBoundsException e) {
                // 不理会
                Log.e(TAG, "hacky viewpager error2");
                return false;
            }
        }
    
        @Override
        public boolean onTouchEvent(MotionEvent ev) {
            try {
                return super.onTouchEvent(ev);
            } catch (IllegalArgumentException ex) {
                ex.printStackTrace();
            }
            return false;
        }
    
    }
    

     

    /

    附:

    <string name="viewpager_indicator">%1$d/%2$d</string>
    <color name="white">#FFffff</color>

    icon_defaultimg.png。占位图

    icon_errorimg.png、错误图

     

     

    demo链接:https://download.csdn.net/download/meixi_android/10681365

    最新版本demo:https://download.csdn.net/download/meixi_android/14946943

    展开全文
  • <uses-permission android:name="android.permission.INTERNET" />   3、应用: List<LocalMedia> list=new ArrayList(); for (int i=0;i;i++){ LocalMedia media=new LocalMedia(); String url=...
  • 安卓图片查看器笔记

    2015-06-02 22:41:00
    android:text="http://cpro.baidu.com/img/cpro_media_small.png" android:layout_width="fill_parent" android:layout_height="wrap_content" /> android:id="@+id/bt" android:layout_width="fill_...
  • Android 图片查看器

    2014-02-21 10:32:12
    1 http://blog.csdn.net/wang8512945/article/details/8075413 2 http://blog.csdn.net/lcore/article/details/8926336 3 http://blog.csdn.net/jj120522/article/details/8467810 4 ...
  • 原标题:PNG图片如何转换为BMP?就是这么简单!在我们日常娱乐和日常工作中,如果遇见将PNG图片转换为BMP图片格式的问题该怎么办?... 工具电脑风云图片格式转换器PNG图片步骤第一步以我自己使用的【风...
  • 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.TextView; ...
  • 说明:仿黑马教程写的  android一个小网络图片查看器(只能查看一张)
  • 适用于android 4.0以上版本的子线程网络图片查看器
  • 第一步:新建一个Android工程命名为netimage目录结构如下图: 第二步:修改activity_main.xml布局文件代码如下: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools=...
  • Excel文件查看器app是一款文档查看软件,Excel文件查看器app对于需要临时查看Excel文档但是又不需要修改它的用户来说,Excel文件查看器app无疑是最佳选择,速度快并且小巧,是个不错的编辑工具。软件介绍Excel文件...
  • excel文件查看器是一款专业的文件查看工具,使用方法简单,支持...excel文件查看器简介:excel文件查看器,强大的文档查看器、编辑器,excel文件查看器能提供给用户查看和阅读手机上的所有文档文件,包括但不限于exc...
  • 一个可以打开PNG的工具,基于libpng开发。有二进制文件和程序源码,用VS2010工程打开。
  • 一、项目目录结构 二、layout界面 三、layout界面XML代码 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools=... android:layout_width="m
  • android:hint="请输入图片的路径" android:text="https://www.baidu.com/img/bd_logo1.png"/> android:id="@+id/button" android:layout_height="wrap_content" android:layout_width="wrap_content...
  • 移动端图片查看器

    千次阅读 2017-07-21 17:25:07
    * 微信端图片查看器 */ /** * 图片查看器 * @param sel 选择器 * @param obj 对象,count:定义是否是添加按钮在li,是就false,getAttr:定义获取图片的资源 * @备注 addBtn是li中添加按钮的class */ function...
  • 为了增强用户之间的交互,Android系统中提供了...比如Android系统提供了ImageView来显示静态图片、AnimationDrawble来开发逐帧动画以及通过Animation对普通图片使用不减动画等。另外,Android应用中的图片不仅包括*.
  • 该楼层疑似违规已被系统折叠隐藏此楼查看此楼while((line=br.readLine())!=null){s+=line+"\n";}br.close();myJInternalFrame.textArea.setText(s);//为内部框架的数据成员jTextAreaStr赋值myJInternalFrame....
  • 1、程序界面很简单,一个按钮和一个ImageView组件,当用户...2.在android studio中新建的工程并不存在assets目录,需要自己创建,在main目录下,创建assets目录,并在里面放入图片资源activity_main.xml布局文件 <Linea
  • 网络图片查看器软件界面网络图片查看器 软件界面 MainActivityjava StreamToolsjava activity_mainxml
  • 今天在网上看到一个关于Splash Activity的Android帖子,博主在一通讲解之后也给出了代码。于是果断下载下来了看看怎么实现的。一步步照着流程把这个功能实现了一遍。一切都没有大问题,但是在gradle编译期间提示报错...
  • 查看/asset/目录下图片图片查看器
  • 网络图片查看器

    2016-12-21 12:33:45
    一.主要代码部分 1.MainActivity.Java package ... import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.os.Bundle;...import android.support.v7.app.AppCompatAct

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 17,255
精华内容 6,902
关键字:

安卓png图片查看器