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和自己的项目对应
  • 相关阅读:
    uva 10491 Cows and Cars
    uva 10910 Marks Distribution
    uva 11029 Leading and Trailing
    手算整数的平方根
    uva 10375 Choose and divide
    uva 10056 What is the Probability?
    uva 11027 Palindromic Permutation
    uva 10023 Square root
    Ural(Timus) 1081. Binary Lexicographic Sequence
    扩展欧几里得(求解线性方程)
  • 原文地址:https://www.cnblogs.com/JorgeZhu/p/7811857.html
Copyright © 2011-2022 走看看