电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

Android 多圖上傳后將圖片進(jìn)行九宮格展示的實(shí)例代碼

瀏覽:9日期:2022-09-21 15:46:35

不多說(shuō)上代碼

public abstract class NineGridAdapter { protected Context context; protected List list; public NineGridAdapter(Context context, List list) { this.context = context; this.list = list; } public abstract int getCount(); public abstract String getUrl(int positopn); public abstract Object getItem(int position); public abstract long getItemId(int position); public abstract View getView(int i, View view);}

package com.wd.weidologin.pic;import android.content.Context;import android.util.AttributeSet;import android.util.DisplayMetrics;import android.view.View;import android.view.ViewGroup;import android.widget.ImageView;public class NineGridlayout extends ViewGroup { private NineGridAdapter adapter; private OnItemClickListerner onItemClickListerner; // 行間距 private int lineSpace; //列間距 private int gap; private final int DEFAULT_WIDTH = 140; private int columns;// private int rows;// private int totalWidth; private Context context; int singleWidth = 0, singleHeight = 0; private int defaultWidth, defaultHeight; private int oldCount; public NineGridlayout(Context context) { this(context, null); } public NineGridlayout(Context context, AttributeSet attrs) { this(context, attrs, 0); } public NineGridlayout(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); this.context = context; gap = dip2px(context, 10); lineSpace = dip2px(context,10); ViewGroup.LayoutParams lp = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,ViewGroup.LayoutParams.WRAP_CONTENT); defaultWidth = defaultHeight = dip2px(context, DEFAULT_WIDTH); } public void setDefaultWidth(int defaultWidth) { this.defaultWidth = defaultWidth; } public void setDefaultHeight(int defaultHeight) { this.defaultHeight = defaultHeight; } public void setAdapter(NineGridAdapter adapter) { this.adapter = adapter; if (adapter == null) { return; } //初始化布局形狀 generateChildrenLayout(adapter.getCount()); //這里做一個(gè)重用view的處理// if (oldCount == 0) { removeAllViews(); for (int i = 0; i < adapter.getCount(); i++) { View itemView = adapter.getView(i, null); addView(itemView, generateDefaultLayoutParams()); }// } /*else { //以前添加過(guò)view int newViewCount = adapter.getCount(); if (oldCount > newViewCount) {removeViews(newViewCount - 1, oldCount - newViewCount);for (int i = 0; i < newViewCount - 1; i++) { adapter.getView(i, getChildAt(i));} } else if (oldCount < newViewCount) {for (int i = 0; i < newViewCount - oldCount; i++) { View itemView = adapter.getView(i, null); addView(itemView, generateDefaultLayoutParams());} } }*/ oldCount = adapter.getCount(); requestLayout(); } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { super.onMeasure(widthMeasureSpec, heightMeasureSpec); int widthMode = MeasureSpec.getMode(widthMeasureSpec); int heightMode = MeasureSpec.getMode(heightMeasureSpec); int sizeWidth = MeasureSpec.getSize(widthMeasureSpec); int sizeHeight = MeasureSpec.getSize(heightMeasureSpec); totalWidth = sizeWidth - getPaddingLeft() - getPaddingRight(); if (adapter != null && adapter.getCount() > 0) { int measureWidth, measureHeight; int childrenCount = adapter.getCount(); if (childrenCount == 1) {singleWidth = defaultWidth;singleHeight = defaultHeight; } else {singleWidth = (totalWidth - gap * (3 - 1)) / 3;singleHeight = singleWidth; } measureChildren(MeasureSpec.makeMeasureSpec(singleWidth, MeasureSpec.EXACTLY), MeasureSpec.makeMeasureSpec(singleHeight, MeasureSpec.EXACTLY)); measureWidth = singleWidth * columns + gap * (columns - 1); measureHeight = singleHeight * rows + lineSpace * (rows - 1); setMeasuredDimension(sizeWidth, measureHeight); } } @Override protected void onLayout(boolean changed, int l, int t, int r, int b) { layoutChildrenView(); } private void layoutChildrenView() { if (adapter == null || adapter.getCount() == 0) { return; } int childrenCount = adapter.getCount(); for (int i = 0; i < childrenCount; i++) { int[] position = findPosition(i); int left = (singleWidth + gap) * position[1] + getPaddingLeft(); int top = (singleHeight + lineSpace) * position[0] + getPaddingTop(); int right = left + singleWidth; int bottom = top + singleHeight; ImageView childrenView = (ImageView) getChildAt(i); if (childrenCount == 1) {//只有一張圖片childrenView.setScaleType(ImageView.ScaleType.FIT_CENTER); } else {childrenView.setScaleType(ImageView.ScaleType.CENTER_CROP); } final int itemPosition = i; childrenView.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) { if (onItemClickListerner != null) { onItemClickListerner.onItemClick(v, itemPosition); }} }); childrenView.layout(left, top, right, bottom); } } private int[] findPosition(int childNum) { int[] position = new int[2]; for (int i = 0; i < rows; i++) { for (int j = 0; j < columns; j++) {if ((i * columns + j) == childNum) { position[0] = i;//行 position[1] = j;//列 break;} } } return position; } public int getGap() { return gap; } public void setGap(int gap) { this.gap = gap; } /** * 根據(jù)圖片個(gè)數(shù)確定行列數(shù)量 * 對(duì)應(yīng)關(guān)系如下 * numrowcolumn * 1 11 * 2 12 * 3 13 * 4 22 * 5 23 * 6 23 * 7 33 * 8 33 * 9 33 * * @param length */ private void generateChildrenLayout(int length) { if (length <= 3) { rows = 1; columns = length; } else if (length <= 6) { rows = 2; columns = 3; if (length == 4) {columns = 2; } } else { rows = 3; columns = 3; } } /** * dp to px */ public static int dip2px(Context context, double dpValue) { final float scale = context.getResources().getDisplayMetrics().density; return (int) (dpValue * scale + 0.5f); } public void setOnItemClickListerner(OnItemClickListerner onItemClickListerner) { this.onItemClickListerner = onItemClickListerner; } public interface OnItemClickListerner { public void onItemClick(View view, int position); }}

package com.wd.weidologin.home;import androidx.appcompat.app.AppCompatActivity;import androidx.recyclerview.widget.GridLayoutManager;import androidx.recyclerview.widget.RecyclerView;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.content.IntentFilter;import android.content.SharedPreferences;import android.graphics.Color;import android.os.Bundle;import android.util.Log;import android.view.View;import android.view.ViewGroup;import android.widget.ImageView;import android.widget.Toast;import com.bumptech.glide.Glide;import com.google.gson.Gson;import com.wd.weidologin.R;import com.wd.weidologin.adapter.AttentionRequestAdapter;import com.wd.weidologin.okutil.okRE;import com.wd.weidologin.pic.NineGridAdapter;import com.wd.weidologin.pic.NineGridlayout;import java.util.ArrayList;import java.util.HashMap;import java.util.List;public class MainActivity2 extends AppCompatActivity { private RecyclerView ry; private AttentionRequestAdapter attentionRequestAdapter; private ArrayList<CircleBean.ResultEntity> lists=new ArrayList<>(); private NineGridlayout mGV; private CircleBean.ResultEntity result; private String picture; private List<String> list = new ArrayList<String>(); private Adapter adapter; public static final String ACTION ='com.example.casts'; private String msg; private SharedPreferences canfig; private SharedPreferences.Editor edited; private String imageUrl = 'http://pic1.nipic.com/2008-09-08/200898163242920_2.jpg';//如果沒(méi)有接口可以用這個(gè)簡(jiǎn)單代替這個(gè)就不需要進(jìn)行切割了 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main2); init();//(有接口的情況) list.add(imageUrl);//沒(méi)有接口的情況 ---==================== if (adapter == null){ adapter = new Adapter(this,list); mGV.setAdapter(adapter); } mGV.setOnItemClickListerner(new NineGridlayout.OnItemClickListerner() { @Override public void onItemClick(View view, int position) {Toast.makeText(getApplicationContext(), String.valueOf(position),Toast.LENGTH_LONG).show(); } });//沒(méi)有接口的情況 ---====================不要混 } private void init() { // int sickCircleId = getIntent().getIntExtra('sickCircleId', 0); canfig = getSharedPreferences('canfig', Context.MODE_PRIVATE); edited = canfig.edit(); int resultkey = canfig.getInt('resultkey', 0); String url='http:.....'+resultkey; HashMap<String, String> headmap = new HashMap<>(); headmap.put('userId','287'); headmap.put('sessionId','1604985492394287'); okRE.getInstance().getCircledetails(url,headmap, new okRE.NetCallBack() { @Override public void onSuccess(String string) {CircleBean circleBean = new Gson().fromJson(string, CircleBean.class);picture = circleBean.getResult().getPicture();Toast.makeText(MainActivity2.this, picture+'', Toast.LENGTH_SHORT).show();mGV = findViewById(R.id.d);String[] split = picture.split(',');//一般多圖上傳后需要將圖片進(jìn)行切割if (picture.equals('')){//在這里我進(jìn)行了是否有圖片的判斷以免沒(méi)有圖片還進(jìn)行占位 mGV.setVisibility(View.GONE);}for (int i = 0; i < split.length; i++) { list.add(split[i]);}if (adapter == null){ adapter = new Adapter(MainActivity2.this,list); mGV.setAdapter(adapter);}mGV.setOnItemClickListerner(new NineGridlayout.OnItemClickListerner() {圖片點(diǎn)擊事件 @Override public void onItemClick(View view, int position) { Toast.makeText(getApplicationContext(), String.valueOf(position),Toast.LENGTH_LONG).show(); }}); } @Override public void onFail(String string) {// Toast.makeText(MainActivity.this, string+'', Toast.LENGTH_SHORT).show(); } }); } private class Adapter extends NineGridAdapter {//適配器 public Adapter(Context context, List list){ super(context,list); } @Override public int getCount() { return list == null?0:list.size(); } @Override public String getUrl(int positon) { return getItem(positon) == null ? null : getItem(positon).toString(); } @Override public Object getItem(int position) { return (list == null) ? null : list.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int i, View view) { ImageView imageView = new ImageView(getApplicationContext()); ViewGroup.LayoutParams lp = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); imageView.setScaleType(ImageView.ScaleType.CENTER_CROP); imageView.setBackgroundColor(Color.parseColor('#f5f5f5')); imageView.setLayoutParams(lp); Glide.with(context).load(getUrl(i)).into(imageView); return imageView; } }}

最后因?yàn)檫@個(gè)包含網(wǎng)絡(luò)請(qǐng)求所以需要進(jìn)行設(shè)置在res下創(chuàng)建xml文件夾創(chuàng)建network_security_config.xml

<?xml version='1.0' encoding='utf-8'?><network-security-config> <base-config cleartextTrafficPermitted='true' /></network-security-config>

放到

Android 多圖上傳后將圖片進(jìn)行九宮格展示的實(shí)例代碼

并且添加網(wǎng)絡(luò)權(quán)限

<uses-permission android:name='android.permission.INTERNET' />

網(wǎng)路請(qǐng)求請(qǐng)看以往博客 多圖上傳請(qǐng)看以往博客或者我上傳的代碼,后續(xù)我會(huì)將全部整合上傳demo感謝觀看

到此這篇關(guān)于Android 多圖上傳后將圖片進(jìn)行九宮格展示的文章就介紹到這了,更多相關(guān)Android 多圖展示九宮格內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Android
相關(guān)文章:
主站蜘蛛池模板: 风淋室生产厂家报价_传递窗|送风口|臭氧机|FFU-山东盛之源净化设备 | 水厂自动化|污水处理中控系统|水利信息化|智慧水务|智慧农业-山东德艾自动化科技有限公司 | 粘度计NDJ-5S,粘度计NDJ-8S,越平水分测定仪-上海右一仪器有限公司 | 大_小鼠elisa试剂盒-植物_人Elisa试剂盒-PCR荧光定量试剂盒-上海一研生物科技有限公司 | 德国进口电锅炉_商用电热水器_壁挂炉_电采暖器_电热锅炉[德国宝] | 聚合氯化铝_喷雾聚氯化铝_聚合氯化铝铁厂家_郑州亿升化工有限公司 | uv机-uv灯-uvled光固化机-生产厂家-蓝盾机电 | 今日娱乐圈——影视剧集_八卦娱乐_明星八卦_最新娱乐八卦新闻 | 佛山商标注册_商标注册代理|专利注册申请_商标注册公司_鸿邦知识产权 | 贴片电容-贴片电阻-二三极管-国巨|三星|风华贴片电容代理商-深圳伟哲电子 | 集装箱展厅-住人集装箱住宿|建筑|房屋|集装箱售楼处-山东锐嘉科技工程有限公司 | 户外环保不锈钢垃圾桶_标识标牌制作_园林公园椅厂家_花箱定制-北京汇众环艺 | 上海恒驭仪器有限公司-实验室平板硫化机-小型平板硫化机-全自动平板硫化机 | 生态板-实木生态板-生态板厂家-源木原作生态板品牌-深圳市方舟木业有限公司 | 鑫达滑石-辽宁鑫达滑石集团| 浙江红酒库-冰雕库-气调库-茶叶库安装-医药疫苗冷库-食品物流恒温恒湿车间-杭州领顺实业有限公司 | 细砂提取机,隔膜板框泥浆污泥压滤机,螺旋洗砂机设备,轮式洗砂机械,机制砂,圆锥颚式反击式破碎机,振动筛,滚筒筛,喂料机- 上海重睿环保设备有限公司 | 嘉兴泰东园林景观工程有限公司_花箱护栏 | 游泳池设计|设备|配件|药品|吸污机-东莞市太平洋康体设施有限公司 | 产业规划_产业园区规划-产业投资选址及规划招商托管一体化服务商-中机院产业园区规划网 | 临沂招聘网_人才市场_招聘信息_求职招聘找工作请认准【马头商标】 | 掺铥光纤放大器-C/L波段光纤放大器-小信号光纤放大器-合肥脉锐光电技术有限公司 | 深圳高新投三江工业消防解决方案提供厂家_服务商_园区智慧消防_储能消防解决方案服务商_高新投三江 | 披萨石_披萨盘_电器家电隔热绵加工定制_佛山市南海区西樵南方综合保温材料厂 | elisa试剂盒价格-酶联免疫试剂盒-猪elisa试剂盒-上海恒远生物科技有限公司 | 生物除臭剂-除味剂-植物-污水除臭剂厂家-携葵环保有限公司 | 洗石机-移动滚筒式,振动,螺旋,洗矿机-青州冠诚重工机械有限公司 | 环比机械 | 小型单室真空包装机,食品单室真空包装机-百科 | 北京网站建设首页,做网站选【优站网】,专注北京网站建设,北京网站推广,天津网站建设,天津网站推广,小程序,手机APP的开发。 | led全彩屏-室内|学校|展厅|p3|户外|会议室|圆柱|p2.5LED显示屏-LED显示屏价格-LED互动地砖屏_蕙宇屏科技 | 密封圈_泛塞封_格莱圈-[东莞市国昊密封圈科技有限公司]专注密封圈定制生产厂家 | 深圳宣传片制作-企业宣传视频制作-产品视频拍摄-产品动画制作-短视频拍摄制作公司 | 手持式线材张力计-套帽式风量罩-深圳市欧亚精密仪器有限公司 | 深圳高新投三江工业消防解决方案提供厂家_服务商_园区智慧消防_储能消防解决方案服务商_高新投三江 | 煤矿人员精确定位系统_矿用无线通信系统_煤矿广播系统 | 踏板力计,制动仪,非接触多功能速度仪,逆反射系数测试仪-创宇 | 电机修理_二手电机专家-河北豫通机电设备有限公司(原石家庄冀华高压电机维修中心) | 厦门ISO认证|厦门ISO9001认证|厦门ISO14001认证|厦门ISO45001认证-艾索咨询专注ISO认证行业 | 质检报告_CE认证_FCC认证_SRRC认证_PSE认证_第三方检测机构-深圳市环测威检测技术有限公司 | 深圳善跑体育产业集团有限公司_塑胶跑道_人造草坪_运动木地板 |