图片缩放

1、导依赖

compile files('libs/uk-co-senab-photoview.jar')
 2、清单文件 

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

3、布局

3.1主布局

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    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:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".activity.MainActivity">


    <GridView
        android:id="@+id/gv"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:numColumns="3"
        />
</RelativeLayout>

3.2跳转后Activity布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:layout_width="match_parent"
              android:layout_height="match_parent"
              android:orientation="vertical">


    <android.support.v4.view.ViewPager
        android:id="@+id/vp"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        />
</LinearLayout>

4、代码

4.1  mainActivity

public class MainActivity extends AppCompatActivity {


    private GridView gv;
    private ArrayList<String> images = new ArrayList<>();


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //找控件
        gv = (GridView) findViewById(R.id.gv);
        //获取数据源
        getData();


        gv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                Intent intent = new Intent(MainActivity.this, ImageBrowseActivity.class);
                intent.putStringArrayListExtra("images", images);
                intent.putExtra("position", position);
                startActivity(intent);
            }
        });


    }


    private void getData() {
        AsyncHttpClient asyncHttpClient = new AsyncHttpClient();
        String url = "https://mock.eolinker.com/success/gIbgeNycc15SNh5mrSNTGC2Tr5WTUsCM";
        asyncHttpClient.get(this, url, new TextHttpResponseHandler() {
            @Override
            public void onFailure(int statusCode, Header[] headers, String responseString, Throwable throwable) {


            }


            @Override
            public void onSuccess(int statusCode, Header[] headers, String responseString) {
                try {
                    JSONObject jsonObject = new JSONObject(responseString);
                    JSONArray data = jsonObject.getJSONArray("data");
                    for (int i = 0; i < data.length(); i++) {
                        String image_url = data.getJSONObject(i).getString("image_url");
                        images.add(image_url);
                    }
                    ImageAdapter adapter = new ImageAdapter(MainActivity.this, data);
                    gv.setAdapter(adapter);
                } catch (JSONException e) {
                    e.printStackTrace();
                }
            }
        });
    }


    //适配器
    private class ImageAdapter extends BaseAdapter {
        Context context;
        JSONArray data;


        public ImageAdapter(Context context, JSONArray data) {
            this.context = context;
            this.data = data;
        }


        @Override
        public int getCount() {
            return data.length();
        }


        @Override
        public Object getItem(int position) {
            return position;
        }


        @Override
        public long getItemId(int position) {
            return 0;
        }


        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            convertView = View.inflate(context, R.layout.item, null);
            ImageView iv = (ImageView) convertView.findViewById(R.id.iv);
            try {
                String image_url = data.getJSONObject(position).getString("image_url");
                Picasso.with(context).load(image_url).placeholder(R.mipmap.ic_launcher).into(iv);


            } catch (JSONException e) {
                e.printStackTrace();
            }


            return convertView;
        }
    }
}

4.2 跳转后Activity

public class ImageBrowseActivity extends FragmentActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_image_browse);
        ViewPager vp = (ViewPager) findViewById(R.id.vp);
        //获取数据
        Intent intent = getIntent();
        int position = intent.getIntExtra("position", 0);
        ArrayList<String> images = intent.getStringArrayListExtra("images");
        ImageBrowseAdapter adapter = new ImageBrowseAdapter(getSupportFragmentManager(), images);
        vp.setAdapter(adapter);
    }
}

4.3 适配器


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值