Android 执行 iperf3 报错:iperf3: error - unable to send control message: Bad file descriptor 作者: Chuwen 时间: 2020-11-28 分类: Android 评论 # Android 执行 iperf3 报错 iperf3: error - unable to send control message: Bad file descriptor # 解决办法 添加网络权限即可。。。
关于 Android 在 Fragment 使用 GridView,当切换多个页面后在返回 GridView 空白 作者: Chuwen 时间: 2020-11-06 分类: Android 评论 # 关于 Android 在 Fragment 使用 GridView 并动态更新数据,当切换多个页面后再返回使用了 GridView 控件的,界面空白 > 排查了许久,发现可能是这个方法有问题,这个方法是在 `Fragment1.java` 里面的,里面会定时更新 `fBean1List` 数据,然后调用 `updateData();` 方法进行通知更新。 > 因为之前在 Activity 这么写没有什么问题,所以理所应当的认为在 Fragment 这么写也应该没有问题,**排查了n处** 后发现,在 Fragment 里并不能这么写 ```java private void updateData() { if (adapter == null) { Log.i(TAG, "updateData: 适配器不存在,重新创建"); adapter = new ChuwenMycar1ItemAdapter(getContext(), fBean1List); mycar_1.setAdapter(adapter); } else { Log.i(TAG, "updateData: 适配器存在,更新数据"); adapter.notifyDataSetChanged(); } } ``` # 所以我将它改成 > 每次都重新 `setAdapter`,然后问题就随之解决了 ``` private void updateData() { adapter = new ChuwenMycar1ItemAdapter(getContext(), fBean1List); mycar_1.setAdapter(adapter); } ``` ## 以上本人见解,无法解释其原因,如果有懂得的朋友们评论说一下 ## 另外, ListView 可能也需要每次重新设置下 Adapter,具体自己测试了
MPAndroidChart 折线图(Line Chart) 设置 Y轴值间隔 作者: Chuwen 时间: 2020-11-05 分类: Android 评论 # MPAndroidChart 折线图(Line Chart) 设置 Y轴值间隔 > 也就是每隔多少就分隔 ```java LieChart weizhangfenxiLineChart = (LineChart) findViewById(R.id.weizhangfenxi_line_chart); //设置 Y Left 值标签间隔 weizhangfenxiLineChart.getAxisLeft().setGranularity(50f); //设置 Y Right 值标签间隔 weizhangfenxiLineChart.getAxisRight().setGranularity(50f); ``` # 运行效果图 ![MPAndroidChart 折线图(Line Chart) 设置 Y轴值间隔][1] [1]: https://nowtime.cc/usr/uploads/2020/11/3884334187.jpg
Android 笔记 · 使用 Volley 让 ImageView 加载(显示)网络图片 作者: Chuwen 时间: 2020-11-02 分类: Android 评论 需要添加 volley 包,具体网上搜一下 # 代码 ```java public void setNetworkImage(final ImageView imageView, String imgUrl) { ImageRequest imageRequest = new ImageRequest(imgUrl, new Response.Listener() { @Override public void onResponse(Bitmap response) { imageView.setImageBitmap(response); } }, 0, 0, Bitmap.Config.RGB_565, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { //如果请求失败,你可设置一张默认的图片 //imageView.setImageResource(R.drawable.idea); } }); } ``` # 使用方法 ```java ```
(Android 笔记) Java 输出一页日历(以周一为一周的开始) 以及实现思路概况 作者: Chuwen 时间: 2020-11-01 分类: Android 评论 # 实现思路概述 > 由于我学 `Java` 是**半路出家,所以一些东西讲的并不标准**,请见谅,很愿意接受大家的批评建议 1. 用一个集合(`List`) 储存本页日历的日期信息(年、月、日、是否为本月<用以着色>) 2. 实例化日历类 `Calendar` ``` Calendar calendar = Calendar.getInstance(); ``` 3. 设置要显示哪年哪月的日历信息 ``` calendar.set(Calendar.YEAR, 2020);//设置哪年 calendar.set(Calendar.MONTH, 11);//设置哪个月 ``` 4. 将日历信息设置为本月1号 ``` calendar.set(Calendar.DAY_OF_MONTH, 1);//将日期推到本月1号 ``` 5. 获取本月1号是星期几,**由于我们需要设置从 周一 为一周的开始**,所以就有以下代码 > 如果是星期一,变量 `currentDayOfWeek` 应该输出 1; > ... > 如果是星期日,变量 `currentDayOfWeek` 应该输出 7. ``` int currentDayOfWeek = calendar.get(Calendar.DAY_OF_WEEK); currentDayOfWeek = currentDayOfWeek == 1 ? 7 : currentDayOfWeek - 1;//获取当前星期几(星期一就是1 ... 星期天是 7) ``` 6. 按照习惯,除了显示本月日历,一般还会显示上个月或下个月来填充 **剩余的格子**,所以我们在绘制前,将日期再往前推(减去) **当前星期几+1 的天数** > ![按照习惯,除了显示本月日历,一般还会显示上个月或下个月来填充 **剩余的格子**,所以我们在绘制前,将日期再往前推(减去) 当前星期几+1 的天数][1] ``` calendar.add(Calendar.DATE, -currentDayOfWeek + 1);//将日期倒退 当前星期几+1 的天数 ``` 7. 然后 **for 循环**,基础的日历格子有 **35** 个 ``` for (int i = 0; i < 35; i++) { Log.i("日期", calendar.get(Calendar.YEAR)+"年" +calendar.get(Calendar.MONTH) + 1+"月"+calendar.get(Calendar.DAY_OF_MONTH)+"日"; calendar.add(Calendar.DATE, +1);//日期+1 获取明天的 } ``` 8. **但是有特殊情况**,当该月1号是 **星期日**,那么我们还应该再增加 `7个格子`,不然日历显示不完整。所以我们需要额外判断下 ``` //绘制的格子数,如果恰好本月1号是星期天,那么就还要再加7个格子以显示完整日历 int gridNum = (currentDayOfWeek < 7) ? 35 : 42; for (int i = 0; i < gridNum; i++) { Log.i("日期", calendar.get(Calendar.YEAR)+"年" +calendar.get(Calendar.MONTH) + 1+"月"+calendar.get(Calendar.DAY_OF_MONTH)+"日"; calendar.add(Calendar.DATE, +1);//日期+1 获取明天的 } ``` 9. 大概日历的思路就是这样,要用其它语言实现也并不难 # `CalendarBean.java` ```java public class CalendarBean { private int year; private int month; private int day; private boolean currentMonth; private boolean isChecked = false; public CalendarBean() { } public CalendarBean(int year, int month, int day, boolean currentMonth) { this.year = year; this.month = month; this.day = day; this.currentMonth = currentMonth; } public int getYear() { return year; } public void setYear(int year) { this.year = year; } public int getMonth() { return month; } public void setMonth(int month) { this.month = month; } public int getDay() { return day; } public void setDay(int day) { this.day = day; } public boolean isCurrentMonth() { return currentMonth; } public void setCurrentMonth(boolean currentMonth) { this.currentMonth = currentMonth; } @NonNull @Override public String toString() { return getYear() + "年" + getMonth() + "月" + getDay() + "日"; } public boolean isChecked() { return isChecked; } public void setChecked(boolean checked) { isChecked = checked; } } ``` # CalendarCreate.java ```java public class CalendarCreate{ private Calendar calendar; private List calendarBeanList = new ArrayList<>(); public static void main(String[] args){ printCalendar(2020, 11);//输出2020年11月日历 } public void printCalendar(int year, int month) { month -= 1;//减去1,因为 java 日历,月份从 0 开始 int currentDayOfWeek; calendarBeanList.clear(); calendar.set(Calendar.YEAR, year);//设置哪年 calendar.set(Calendar.MONTH, month);//设置哪个月 calendar.set(Calendar.DAY_OF_MONTH, 1);//将日期推到本月1号 currentDayOfWeek = calendar.get(Calendar.DAY_OF_WEEK); currentDayOfWeek = currentDayOfWeek == 1 ? 7 : currentDayOfWeek - 1;//获取当前星期几(星期一就是1 ... 星期天是 7) calendar.add(Calendar.DATE, -currentDayOfWeek + 1);//将日期倒退 当前星期几+1 的天数 int gridNum = (currentDayOfWeek < 7) ? 35 : 42;//绘制的格子数,如果恰好本月1号是星期天,那么就还要再加57个格子以显示完整日历 for (int i = 0; i < gridNum; i++) { calendarBeanList.add(i, new CalendarBean( calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH) + 1,//一年中的哪个月。月份 calendar.get(Calendar.DAY_OF_MONTH),//一个月中的第几天。几号 calendar.get(Calendar.MONTH) == month//判断是否为本月 )); calendar.add(Calendar.DATE, +1);//日期+1 获取明天的 } Log.i("打印日历数组", calendarBeanList.toString()); } } ``` # 运行结果 ``` I/打印日历数组: [2020年10月26日, 2020年10月27日, 2020年10月28日, 2020年10月29日, 2020年10月30日, 2020年10月31日, 2020年11月1日, 2020年11月2日, 2020年11月3日, 2020年11月4日, 2020年11月5日, 2020年11月6日, 2020年11月7日, 2020年11月8日, 2020年11月9日, 2020年11月10日, 2020年11月11日, 2020年11月12日, 2020年11月13日, 2020年11月14日, 2020年11月15日, 2020年11月16日, 2020年11月17日, 2020年11月18日, 2020年11月19日, 2020年11月20日, 2020年11月21日, 2020年11月22日, 2020年11月23日, 2020年11月24日, 2020年11月25日, 2020年11月26日, 2020年11月27日, 2020年11月28日, 2020年11月29日, 2020年11月30日, 2020年12月1日, 2020年12月2日, 2020年12月3日, 2020年12月4日, 2020年12月5日, 2020年12月6日] ``` # 实际应用效果 > 橘黄色方框是实际应用效果 > 如果想要看完整的项目代码,可以查看 **糖疯子** 的代码 https://www.jianshu.com/p/4ae8f56f3bcb ![1604206482003.png][2] [1]: https://cdn.nowtime.cc/2020/11/01/2694057533.jpg [2]: https://cdn.nowtime.cc/2020/11/01/2390028636.png