个人技术博客(α)
写在前面
此次的团队项目我是被分到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里面加
实现类似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和自己的项目对应
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:使用Catalyst进行自然语言处理
· 分享一个我遇到过的“量子力学”级别的BUG。
· Linux系列:如何调试 malloc 的底层源码
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 历时 8 年,我冲上开源榜前 8 了!
· 物流快递公司核心技术能力-海量大数据处理技术
· 四大AI编程工具组合测评
· 关于能否用DeepSeek做危险的事情,DeepSeek本身给出了答案
· 如何在 Github 上获得 1000 star?