三级联动+放大缩小功能+时间列表

三级联动:

添加依赖:implementation 'com.contrarywind:Android-PickerView:4.1.8'//PickerView

创建布局:

布局代码:

   <TextView
        android:text="点击时间选择器"
        android:id="@+id/timepicker"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"></TextView>
    <TextView
        android:text="点击选择地址"
        android:id="@+id/addressPicker"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"></TextView>

 创建Activity:

package com.example.myapplication;

import android.os.Bundle;
import android.view.View;
import android.widget.TextView;

import androidx.appcompat.app.AppCompatActivity;

import com.bigkoo.pickerview.builder.OptionsPickerBuilder;
import com.bigkoo.pickerview.builder.TimePickerBuilder;
import com.bigkoo.pickerview.listener.OnOptionsSelectListener;
import com.bigkoo.pickerview.listener.OnTimeSelectListener;
import com.bigkoo.pickerview.view.OptionsPickerView;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

public class PickerMainActivity extends AppCompatActivity {

    private TextView timepicker,addressPicker;

    private List<String>pros;
    private List<List<String>>cities;
    private List<List<List<String>>>towns;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_picker_main);
        timepicker=findViewById(R.id.timepicker);
        addressPicker=findViewById(R.id.addressPicker);
        initData();
         //设置时间
        timepicker.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                new TimePickerBuilder(PickerMainActivity.this, new OnTimeSelectListener() {
                    @Override
                    public void onTimeSelect(Date date, View v) {
                        //设置值转换
                        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
                        timepicker.setText(simpleDateFormat.format(date));
                    }
                }).isCyclic(true)
                        .setTitleText("请选择出生日期")
                        .build().show();
            }
        });
         //三级联动
        addressPicker.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                OptionsPickerView<String>builder=new OptionsPickerBuilder(PickerMainActivity.this, new OnOptionsSelectListener() {
                    @Override
                    public void onOptionsSelect(int options1, int options2, int options3, View v) {
                        String s = pros.get(options1);
                        String s1 = cities.get(options2).get(options3);
                        String townSting=
                                towns.get(options1).get(options2).get(options3);
                        addressPicker.setText(s+"-"+s1+"-"+townSting);
                    }
                }).build();
                builder.setPicker(pros,cities,towns);
                builder.show();

            }
        });
    }
    private void initData(){
      pros=new ArrayList<>();
      pros.add("天津市");
      cities=new ArrayList<>();
      List<String>tjCities=new ArrayList<>();
      tjCities.add("北辰区");
      cities.add(tjCities);
      towns=new ArrayList<>();

      List<List<String>>tjTowns=new ArrayList<>();
      List<String>bcTowns=new ArrayList<>();
      bcTowns.add("北辰区1");
      bcTowns.add("北辰区2");
      bcTowns.add("北辰区3");
      tjTowns.add(bcTowns);
      towns.add(tjTowns);
    }

}

展示效果:

 放大缩小布局:

 布局代码:

<Button
       android:onClick="big"
       android:id="@+id/scale_big"
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:text="点击图片放大"></Button>
    <Button
        android:onClick="scaleSmall"
        android:text="点击图片缩小"
        android:id="@+id/scale_small"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"></Button>
    <com.github.chrisbanes.photoview.PhotoView
        android:id="@+id/phontoView"
        android:src="@mipmap/ic_launcher"
        android:layout_width="match_parent"
        android:layout_height="match_parent"></com.github.chrisbanes.photoview.PhotoView>

activity页面:

 代码:

package com.example.myapplication;

import android.os.Bundle;
import android.view.GestureDetector;
import android.view.MotionEvent;
import android.view.View;
import android.widget.Button;

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;

import com.github.chrisbanes.photoview.PhotoView;

public class MainActivity extends AppCompatActivity {

    private Button scaleBig;
    private Button scaleSmall;
    private PhotoView phontoView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initView();
        //设置最大
        phontoView.setMaximumScale(3f);
        //设置最小
        phontoView.setMinimumScale(0.5f);
        phontoView.setOnDoubleTapListener(new GestureDetector.OnDoubleTapListener() {
            @Override
            public boolean onSingleTapConfirmed(@NonNull MotionEvent e) {
                return false;
            }

            @Override
            public boolean onDoubleTap(@NonNull MotionEvent e) {
               phontoView.setScale(2f);
                return false;
            }

            @Override
            public boolean onDoubleTapEvent(@NonNull MotionEvent e) {
                return false;
            }
        });
    }
    public void big(View view){
        phontoView.setScale(2f);
    }

    public void scaleSmall(View view){
        phontoView.setScale(0.5f);
    }

    private void initView() {
        scaleBig = (Button) findViewById(R.id.scale_big);
        scaleSmall = (Button) findViewById(R.id.scale_small);
        phontoView = (PhotoView) findViewById(R.id.phontoView);
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值