企业网站排名技巧/山东工艺美术学院网站建设公司
仿ios的appstore中的图片过度拉伸效果 android仿ios下拉放大图片的最佳方案,自定义扩展RecycleView,保留其原始功能,
一.效果图:
二.快速实现:
1.主函数代码:
import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.TextView;import com.we.widget.WeRecycleView;public class MainActivity extends Activity {private WeRecycleView mRecycleView;private int mCount = 100;private int mDensity;private TextView mTitleView;private final int COL_3F51B5 = Color.parseColor("#3F51B5");private final int RED = Color.red(COL_3F51B5);private final int GREEN = Color.green(COL_3F51B5);private final int BLUE = Color.blue(COL_3F51B5);@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mDensity = (int) getResources().getDisplayMetrics().density;mTitleView = findViewById(R.id.title);ImageView ivIcon = findViewById(R.id.iv_icon);ivIcon.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {}});mTitleView.setBackgroundColor(Color.argb(0, RED, GREEN, BLUE));mRecycleView = findViewById(R.id.recycle);mRecycleView.setLayoutManager(new LinearLayoutManager(this));mRecycleView.setScrollMode(WeRecycleView.SCROLL_SCALE_HEAD);mRecycleView.setMaxScale(4f);//如果有titleBar,这就设titlebar的高度,没有就不需要设置mRecycleView.setCloseOffset(50 * mDensity);mRecycleView.setOnHeadExpandListener(new WeRecycleView.OnHeadExpandListener() {@Overridepublic void onExpand(float percent) {mTitleView.setBackgroundColor(Color.argb((int) (255 * (1 - percent)), RED, GREEN, BLUE));}@Overridepublic void onEnterSafeArea(boolean isEnter) {}});initAdapter();}private void initAdapter() {mRecycleView.setAdapter(new RecyclerView.Adapter() {@Overridepublic int getItemViewType(int position) {return position;}@NonNull@Overridepublic RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {if (viewType == 0) {final ImageView imageView = new ImageView(MainActivity.this);imageView.setScaleType(ImageView.ScaleType.FIT_XY);imageView.setLayoutParams(new RecyclerView.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, (int) (getResources().getDisplayMetrics().widthPixels * 533f / 800)));return new RecyclerView.ViewHolder(imageView) {@Overridepublic String toString() {return super.toString();}};} else {TextView textView = new TextView(MainActivity.this);textView.setTextColor(Color.BLACK);textView.setTextSize(30);textView.setGravity(Gravity.CENTER);textView.setLayoutParams(new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, mDensity * 150));return new RecyclerView.ViewHolder(textView) {@Overridepublic String toString() {return super.toString();}};}}@Overridepublic void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {if (position == 0) {((ImageView) holder.itemView).setImageResource(R.drawable.pic);} else {holder.itemView.setBackgroundColor(position % 2 == 0 ? Color.WHITE : Color.parseColor("#F0F0F0"));}}@Overridepublic int getItemCount() {return mCount;}});}}
2.布局:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"><com.we.widget.WeRecycleViewandroid:id="@+id/recycle"android:layout_width="match_parent"android:layout_height="match_parent" /><TextViewandroid:id="@+id/title"android:text="仿IOS下拉放大图片"android:textColor="#ffffff"android:layout_width="match_parent"android:layout_height="50dp"android:paddingLeft="20dp"android:gravity="center_vertical"android:textSize="18dp" /><ImageViewandroid:id="@+id/iv_icon"android:layout_marginLeft="10dp"android:layout_marginBottom="10dp"android:layout_alignParentBottom="true"android:src="@drawable/stop_timer_btn"android:layout_width="50dp"android:layout_height="50dp"android:gravity="center_vertical"android:textSize="18dp" /></RelativeLayout>
3.Shape绘制带阴影效果的圆形按钮:
stop_timer_btn.xml:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"><!-- normal --><item android:state_enabled="true" android:state_focused="false" android:state_pressed="false"><layer-list><item android:drawable="@drawable/shape_sgf" /><item android:bottom="15dp" android:left="15dp" android:right="15dp" android:top="15dp"><shape android:shape="oval"><stroke android:width="1dp" android:color="#FFFCFCFC" /><gradient android:angle="270" android:endColor="#FF91c0e8" android:startColor="#FFa7d3fa" /></shape></item></layer-list></item><!-- pressed --><item android:state_enabled="true" android:state_pressed="true"><layer-list><item android:drawable="@drawable/shape_sgf" /><item android:bottom="15dp" android:left="15dp" android:right="15dp" android:top="15dp"><shape android:shape="oval"><stroke android:width="2dp" android:color="#FFf8f640" /><gradient android:angle="270" android:endColor="#FF91c0e8" android:startColor="#FFa7d3fa" /></shape></item></layer-list></item><!-- selected --><item android:state_enabled="true" android:state_focused="true" android:state_pressed="false"><layer-list><item android:drawable="@drawable/shape_sgf" /><item android:bottom="15dp" android:left="15dp" android:right="15dp" android:top="15dp"><shape android:shape="oval"><stroke android:width="2dp" android:color="#FFf8f640" /><gradient android:angle="270" android:endColor="#FF91c0e8" android:startColor="#FFa7d3fa" /></shape></item></layer-list></item><!-- ...... -->
</selector>
shape_sgf.xml:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" ><!-- outer circle --><item><shape android:shape="oval" ><solid android:color="#FFACB8C3" /></shape></item><!-- inner shadow of outer circle --><itemandroid:bottom="2dp"android:left="2dp"android:right="2dp"android:top="2dp"><shape android:shape="oval"><solid android:color="#FFbdcad6" /></shape></item><itemandroid:bottom="3dp"android:left="3dp"android:right="3dp"android:top="3dp"><shape android:shape="oval"><solid android:color="#FFc3cfd9" /></shape></item><itemandroid:bottom="4dp"android:left="4dp"android:right="4dp"android:top="4dp"><shape android:shape="oval"><solid android:color="#FFcbd6df" /></shape></item><itemandroid:bottom="5dp"android:left="5dp"android:right="5dp"android:top="5dp"><shape android:shape="oval"><solid android:color="#FFd4dee5" /></shape></item><!-- gap --><itemandroid:bottom="6dp"android:left="6dp"android:right="6dp"android:top="6dp"><shape android:shape="oval" ><solid android:color="#FFdae2e8" /></shape></item><!-- outer shadow of center circle --><itemandroid:bottom="10dp"android:left="10dp"android:right="10dp"android:top="10dp"><shape android:shape="oval"><solid android:color="#FFced5dc" /></shape></item><itemandroid:bottom="12dp"android:left="12dp"android:right="12dp"android:top="12dp"><shape android:shape="oval"><solid android:color="#FFbcc4c9" /></shape></item><itemandroid:bottom="13dp"android:left="13dp"android:right="13dp"android:top="13dp"><shape android:shape="oval"><solid android:color="#FFb4bbc0" /></shape></item><itemandroid:bottom="14dp"android:left="14dp"android:right="14dp"android:top="14dp"><shape android:shape="oval"><solid android:color="#FFacb3b8" /></shape></item><!-- center circle --><itemandroid:bottom="15dp"android:left="15dp"android:right="15dp"android:top="15dp"><shape android:shape="oval"><stroke android:width="1dp" android:color="#FFFCFCFC"/><gradientandroid:angle="270"android:endColor="#FFCFD7DD"android:startColor="#FFF0F5F9" /></shape></item></layer-list>
4.相关源码:
https://github.com/chengweidev/widget