zoukankan      html  css  js  c++  java
  • 个人技术博客(α)

    写在前面

    此次的团队项目我是被分到Android项目开发组的,因此这篇个人技术博客主要是有关在Android开发过程中遇到的难题以及一些学到的一些相关的技术。


    Android Studio安装过程中遇到的问题

    安装Android Studio的时候基本就是参照网上的教程啦做的,但有一个地方卡了我很久,就是程序一直卡在"Building Gradle project info"不动,分析应该是你懂得的网络问题,网上看了挺多解决办法,但都没有解决。。。。。最后是看到CSDN上一个的博客:打开gradle-wrapper.properties,复制里面的链接地址用迅雷下载得到"gradle-4.1-all.zip"然后放到指定的文件夹下。问题完美解决。


    根据教程写了个监听器

    package com.example.jorgezhu.myapplication;
    
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.widget.*;
    import android.view.View.OnClickListener;
    import android.view.*;
    
    public class MainActivity extends AppCompatActivity {
    
        private TextView textView;
        private Button button;
        private int sum=0;
        private ButtonListener buttonListener;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            textView=(TextView)findViewById(R.id.textView01);
            textView.setText("google is a great");
            button=(Button)findViewById(R.id.button01);
            buttonListener=new ButtonListener();
            button.setOnClickListener(buttonListener);
        }
        class ButtonListener implements OnClickListener{
            @Override
            public void onClick(View v){
                sum++;
                textView.setText("当前点击次数为"+sum);
            }
        }
    }
    

    关于Android6.0的获取权限问题

    我做的模块需要读取相应目录下的图片,但不知道为什么一直读取不成功,后面发现好像是权限问题,百度了一晚上的如何获取读取权限都没效果,百度上基本上都是叫我在AndroidManifest里面加这句话,但是这并没有效果。后来发现Android6.0及以上的权限好像更改了,获取权限变得更为严格,不能简单地在AndroidManifest中添加一句话,最后还要执行requestPermissions()方法。这个问题足足把我拖了一晚上,真是心累啊。

    实现类似StackView的图片浏览界面

    看了网上的相关教程,今天终于把StackView图片浏览功能做出来了。首先定义一个主activity:PicStackViewActivity,相关代码如下:

    package com.example.mcjproject;
    
    import android.Manifest;
    import android.os.Environment;
    import android.support.v4.app.ActivityCompat;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.util.Log;
    import android.view.View;
    import android.widget.AdapterView;
    import android.widget.StackView;
    import android.widget.TextView;
    
    import java.io.File;
    import java.util.ArrayList;
    import java.util.List;
    import java.util.Timer;
    
    public class PicStackViewActivity extends AppCompatActivity {
        private StackView stackView;
        private List<String> images = new ArrayList<>();
        private ImageAdapter imageAdapter;
        private TextView textView;
        private Timer down;
        private Timer timerup;
        private static final int REQUEST_EXTERNAL_STORAGE = 1;
        private static String[] PERMISSIONS_STORAGE = {
                Manifest.permission.READ_EXTERNAL_STORAGE,
                Manifest.permission.WRITE_EXTERNAL_STORAGE
        };
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
    
            super.onCreate(savedInstanceState);
            setContentView(R.layout.pic_view);
            stackView = (StackView) findViewById(R.id.stackview);
            textView = (TextView) findViewById(R.id.textview);
            ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.READ_EXTERNAL_STORAGE},140);
            images=getPictures(Environment.getExternalStorageDirectory()+"/Download");
            imageAdapter = new ImageAdapter(images, this);
            stackView.setAdapter(imageAdapter);
            stackView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                @Override
                public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                    textView.setText("第"+(position+1)+"个杨幂");
                }
            });
        }
    
        public List<String> getPictures(final String strPath) {
            List<String> list = new ArrayList<String>();
            File file = new File(strPath);
            /*if(file.canRead())
            {
                Log.d("hello","canread");
            }*/
            File[] allfiles = file.listFiles();
            if (allfiles == null) {
                return null;
            }
            for(int k = 0; k < allfiles.length; k++) {
                final File fi = allfiles[k];
                if(fi.isFile()) {
                    int idx = fi.getPath().lastIndexOf(".");
                    if (idx <= 0) {
                        continue;
                    }
                    String suffix = fi.getPath().substring(idx);
                    if (suffix.toLowerCase().equals(".jpg") ||
                            suffix.toLowerCase().equals(".jpeg") ||
                            suffix.toLowerCase().equals(".bmp") ||
                            suffix.toLowerCase().equals(".png") ||
                            suffix.toLowerCase().equals(".gif") ) {
                        list.add(fi.getPath());
                    }
                }
            }
            return list;
        }
    
    }
    

    然后定义一个图像适配器类ImageAdaper,代码如下:

    package com.example.mcjproject;
    
    import android.content.Context;
    import android.graphics.Bitmap;
    import android.graphics.BitmapFactory;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.BaseAdapter;
    import android.widget.ImageView;
    
    import java.util.List;
    
    /**
     * Created by JorgeZhu on 2017/11/12.
     */
    
    public class ImageAdapter extends BaseAdapter {
        private List<String> mImages;
        private Context mContext;
        public ImageAdapter(List<String> mImages,Context context){
            this.mImages = mImages;
            mContext = context;
        }
        @Override
        public int getCount() {
            return mImages.size();
        }
    
        @Override
        public Object getItem(int position) {
            return mImages.get(position);
        }
    
        @Override
        public long getItemId(int position) {
            return position;
        }
    
        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            ImageView imageView = new ImageView(mContext);
            Bitmap bm=null;
            bm = BitmapFactory.decodeFile(mImages.get(position));
            imageView.setImageBitmap(bm);
            //imageView.setImageResource(mImages.get(position));
            return imageView;
        }
    }
    

    最后是一个布局文件pic_view.xml

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout 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"
        android:orientation="vertical"
        tools:context="com.example.mcjproject.PicStackViewActivity">
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
            <TextView
                android:id="@+id/textview"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textSize="25sp"
                android:textColor="#ff0000"
                android:text="当前位置"
                />
       </LinearLayout>
    
        <StackView
            android:id="@+id/stackview"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:loopViews="false"
            />
    </LinearLayout>
    

    关于如何导入github上开源项目的library的记录

    • 1.将github上项目的library下载下来。
    • 2.Android Studio上选择import module并选中要导入的library路径
    • 3.将打开刚导入的library,再打开src文件夹下的build.gradle
    • 4.将"apply from........"注释掉
    • 5.修改dependencies下的版本和自己的项目对应
    • 6.修改minSdkVersion和targetSdkVersion和自己的项目对应
  • 相关阅读:
    混合模式程序集是针对“v2.0.50727”版的运行时生成的,在没有配置其他信息的情况
    静态static与方法重载
    编写的一个“手机”的类
    面向对象编程(OOP)————修饰符
    POJO
    设计模式——单例模式
    矩形类 求面积
    面向对象编程(OOP)————类
    面向对象编程(OOP)
    for、if循环直至输入正确
  • 原文地址:https://www.cnblogs.com/JorgeZhu/p/7811857.html
Copyright © 2011-2022 走看看