Совместите логотип в левом верхнем углу изображения в представлении изображения - PullRequest
0 голосов
/ 28 ноября 2018

Я хочу разместить логотип слева вверху на изображении.Изображение не может быть масштабировано или тип масштаба не может быть назначен.Изображение должно быть в своем первоначальном размере.Логотип всегда должен быть в левом верхнем углу изображения на всех экранах.

MainActivity

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);

        setContentView(R.layout.activity_main);

        ViewPager viewPager = findViewById(R.id.imgviewPager);

        List<String> imagesList = new ArrayList<>();
        imagesList.add("http://images.unsplash.com/photo-1503919545889-aef636e10ad4?ixlib=rb-0.3.5&q=80&fm=jpg");
        imagesList.add("http://images.unsplash.com/photo-1533738699159-d0c68059bb61?ixlib=rb-0.3.5&q=80&fm=jpg");
        imagesList.add("http://images.unsplash.com/photo-1500462918059-b1a0cb512f1d?ixlib=rb-0.3.5&q=80&fm=jpg");
        imagesList.add("http://images.unsplash.com/photo-1516474504835-58236f241ee8?ixlib=rb-0.3.5&q=80&fm=jpg");


        viewPager.setAdapter(new CustomPagerAdapter(this,imagesList));

    }

Пользовательский адаптер

class CustomPagerAdapter extends PagerAdapter {

    private Context mContext;
    private List<String> imgs;

    public CustomPagerAdapter(Context context,List<String> img) {
        mContext = context;
        imgs = img;
    }

    @Override
    public Object instantiateItem(ViewGroup collection, int position) {
        LayoutInflater inflater = LayoutInflater.from(mContext);
        ViewGroup layout = (ViewGroup) inflater.inflate(R.layout.image_item, collection, false);
        collection.addView(layout);
        ImageView imageView = layout.findViewById(R.id.img);
        Picasso.get().load(imgs.get(position)).into(imageView);

        return layout;
    }

    @Override
    public void destroyItem(ViewGroup collection, int position, Object view) {
        collection.removeView((View) view);
    }

    @Override
    public int getCount() {
        return imgs.size();
    }

    @Override
    public boolean isViewFromObject(View view, Object object) {
        return view == object;
    }

    @Override
    public CharSequence getPageTitle(int position) {
        return "";
    }

Элемент ImageAdapter

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center|bottom">
        <ImageView
            android:id="@+id/img"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />
        <ImageView
            android:layout_width="20dp"
            android:layout_height="20dp"
            android:src="@mipmap/ic_launcher"/>

    </RelativeLayout>

</LinearLayout>

Стиль

<style name="AppTheme.NoActionBar">
        <item name="windowActionBar">false</item>
        <item name="windowNoTitle">true</item>
        <item name="android:windowAnimationStyle">@null</item>
        <item name="android:windowDrawsSystemBarBackgrounds" tools:ignore="NewApi">true</item>
        <item name="android:statusBarColor" tools:ignore="NewApi">@android:color/transparent</item>
    </style>

В настоящее время код написан так, что все размеры экрана жестко запрограммированы в коде, а логотип настроен для каждого размера экрана.,Размеры изображений одинаковы (1080px x 1620px).Но это не масштабируемый подход для новых устройств, которые появляются на рынке.

1 Ответ

0 голосов
/ 28 ноября 2018

Вы можете попробовать использовать AdjustViewBounds на основном изображении и установить свой логотип alignTop для него в RelativeLayout:

<RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">

    <ImageView
            android:id="@+id/img"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"
            android:adjustViewBounds="true"/>
    <ImageView
            android:layout_width="20dp"
            android:layout_height="20dp"
            android:layout_alignTop="@+id/img"
            android:src="@mipmap/ic_launcher"/>
</RelativeLayout>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...